Je vragen slaan nergens op. Eerst selecteert u de DISTINCT-datums (negeer tijd) uit de gegevens. Vervolgens selecteert u voor elke datum.. alle gegevens voor die datum?
Waarom voer je niet gewoon één zoekopdracht uit
SELECT *, DATE(added) as DateNoTime
FROM tb_videos
ORDER BY added desc
Als je maar 5 dates wilt en de tafel is groot, dan zijn er twee mogelijkheden.
1, Er zijn nooit gaten in datums, u kunt gebruiken
SELECT *, DATE(added) as DateNoTime
FROM tb_videos
WHERE added >= ADDDATE(CURDATE(), interval -4 days)
ORDER BY added desc
2, als er hiaten kunnen zijn, b.v. niets voor gisteren, dus het moet de laatste 5 dagen tonen die records hebben
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
Dit geeft u alle gegevens. Houd in PHP DateNoTime bij. Telkens wanneer dat verandert, bevindt u zich op een andere datum, waardoor u eerder een nieuwe zoekopdracht zou hebben uitgevoerd. De code zou anders slechts minimaal moeten veranderen.
Niet aangevinkte PHP-code
$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
}