2011-03-21 28 views
0

我希望尽量减少我的查询如何最小化我的查询?

"SELECT * FROM tb_videos GROUP BY DATE(added) ORDER BY DATE(added) desc" 
GET结果

foreach($result as $rst) 
{  
    $dt=date('Y-m-d',strtotime($rst->added)); 
    SELECT * FROM tb_videos WHERE DATE(added)='$dt' ORDER BY added desc 
} 

我可以做一个查询后

+0

那是什么让你$结果第一个查询?告诉我们,我们应该能够制定一个连接查询以减少您正在执行的数据库查询的数量 – 2011-03-21 10:28:23

+0

第一个查询返回分组日期 – Sammem 2011-03-21 10:30:58

+0

告诉我们它的作用将无济于事......我们需要知道查询自己。我们需要知道你想要达到什么......我认为这与你以前的问题有关 – 2011-03-21 10:32:18

回答

1

您想最小化找到的记录吗?使用where子句来选择具体的记录

“SELECT * FROM tb_videos WHERE videogroup =动作GROUP BY DATE(加)ORDER BY DATE(加)desc” 的例子

对于

+0

请举例 – Sammem 2011-03-21 10:31:48

0
SELECT * FROM tb_videos WHERE DATE(added) = curdate() ORDER BY added desc 
2

你查询没有意义。首先,您要从数据中选择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 
} 
+0

我希望它能帮助我,但我还有其他问题。如果我使用它,我的分页会崩溃,因为我想列出每页5天的视频 – Sammem 2011-03-21 10:39:58

+0

@Sammem您从问题 – RichardTheKiwi 2011-03-21 10:42:01

+0

中遗漏了LIMIT子句真的,您的代码非常有帮助。现在我有另一个问题,请帮助我。我想用它做分页。如果我使用这个,只有我可以列出视频每页的视频没有,但我想列出视频每天没有 – Sammem 2011-03-21 10:46:49