Vaše dotazy nedávají smysl. Nejprve z dat vybíráte DISTINCT data (ignorujte čas). Potom pro každé datum vyberete všechna data pro toto datum?
Proč nezadáte jeden dotaz
SELECT *, DATE(added) as DateNoTime
FROM tb_videos
ORDER BY added desc
Pokud chcete pouze 5 dat a tabulka je velká, existují dvě možnosti.
1, V datech nikdy nejsou mezery, můžete použít
SELECT *, DATE(added) as DateNoTime
FROM tb_videos
WHERE added >= ADDDATE(CURDATE(), interval -4 days)
ORDER BY added desc
2, Pokud mohou být mezery, např. nic za včerejšek, takže musí zobrazit posledních 5 dní, které mají záznamy
SELECT *, DATE(added) as DateNoTime
FROM (
select min(DateNoTime) as MinDate
from
(
select DATE(added) as DateNoTime
FROM tb_videos
order by DateNoTime desc
limit 5
) x) y, tb_videos
WHERE added >= y.MinDate
ORDER BY added desc
Tím získáte všechna data. V PHP sledujte DateNoTime. Kdykoli se to změní, nacházíte se v jiném datu, což by dříve způsobilo spuštění dalšího dotazu. Kód by se jinak měl změnit jen minimálně.
Nezaškrtnutý kód PHP
$result = mysql_query('
SELECT *, DATE(added) as DateNoTime
FROM (
select min(DateNoTime) as MinDate
from
(
select DATE(added) as DateNoTime
FROM tb_videos
order by DateNoTime desc
limit 5
) x) y, tb_videos
WHERE added >= y.MinDate
ORDER BY added desc
');
$prevdate = NULL;
foreach($result as $rst)
{
if($prevdate!=$rst=>DateNoTime) {
// do something, like printing out a header for each new date
$prevdate=$rst=>DateNoTime;
}
// do something with the record
}