Dina frågor är meningslösa. Först väljer du DISTINKT datum (ignorera tid) från data. Sedan för varje datum, väljer du all data för det datumet?
Varför skickar du inte bara en fråga
SELECT *, DATE(added) as DateNoTime
FROM tb_videos
ORDER BY added desc
Om du bara vill ha 5 dejter, och bordet är stort, finns det två möjligheter.
1, Det finns aldrig luckor i datum, du kan använda
SELECT *, DATE(added) as DateNoTime
FROM tb_videos
WHERE added >= ADDDATE(CURDATE(), interval -4 days)
ORDER BY added desc
2, Om det kan finnas luckor, t.ex. inget för igår så det måste visa senaste 5 dagarna som har rekord
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
Detta ger dig all data. Håll koll på DateNoTime i PHP. Närhelst det ändras är du på ett annat datum, vilket tidigare skulle ha fått dig att skicka en annan fråga. Koden bör annars bara ändras minimalt.
Avmarkerad PHP-kod
$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
}