Вашите запитвания нямат смисъл. Първо избирате ОТДЕЛНИТЕ дати (игнорирайте часа) от данните. След това за всяка дата вие... избирате всички данни за тази дата?
Защо просто не задействате една заявка
SELECT *, DATE(added) as DateNoTime
FROM tb_videos
ORDER BY added desc
Ако искате само 5 дати и масата е голяма, има две възможности.
1, Никога няма пропуски в датите, можете да използвате
SELECT *, DATE(added) as DateNoTime
FROM tb_videos
WHERE added >= ADDDATE(CURDATE(), interval -4 days)
ORDER BY added desc
2, Ако може да има пропуски, напр. нищо за вчера, така че трябва да показва последните 5 дни, които имат записи
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
Това ви дава всички данни. В PHP следете DateNoTime. Всеки път, когато това се промени, вие сте в различна дата, което преди това би ви накарало да задействате друга заявка. В противен случай кодът трябва да се промени само минимално.
Непроверен 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
}