あなたの質問は意味がありません。まず、データからDISTINCT日付(時間を無視)を選択します。次に、日付ごとに、その日付のすべてのデータを選択しますか?
1つのクエリを実行してみませんか
SELECT *, DATE(added) as DateNoTime
FROM tb_videos
ORDER BY added desc
5つの日付のみが必要で、テーブルが大きい場合、2つの可能性があります。
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
}