आपके प्रश्नों का कोई मतलब नहीं है। सबसे पहले आप डेटा से DISTINCT तिथियों (समय की अनदेखी) का चयन कर रहे हैं। फिर प्रत्येक तिथि के लिए, आप.. उस तिथि के लिए सभी डेटा का चयन करें?
आप सिर्फ एक सवाल क्यों नहीं उठाते हैं
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
}