2012-08-08 178 views
1

我有一个评论系统; 我有一个查询mysql两个查询

SELECT ShoutID,Message, User, Date, ShoutImageThumb, ShoutImageBig,UserID, 
     Email, FullName, UserImageThumb, Admin FROM shoutbox LEFT JOIN users ON 
     users.Email = shoutbox.User ORDER BY ShoutID DESC LIMIT 10 

,虽然其经历的循环 在页面上我运行的循环另一个查询得到评论该消息

SELECT users.UserID, users.Email, users.FullName, shoutboxcomments.ShoutID, 
     shoutboxcomments.`Comment`, shoutboxcomments.`Date`, 
     shoutboxcomments.`User`, shoutboxcomments.CommentID FROM shoutboxcomments 
     LEFT JOIN users ON users.Email = shoutboxcomments.User 
     WHERE ShoutID = '.$ShoutID.' ORDER BY CommentID ASC 

是否有可能加入这些查询或我可以如何简化它,因为即时通讯建设在PHP使用mvc架构

回答

2

而不是每个帖子运行一个查询,使用IN一次获取多个帖子的评论。

SELECT users.UserID, users.Email, ... 
FROM shoutboxcomments 
LEFT JOIN users 
ON users.Email = shoutboxcomments.User 
WHERE ShoutID IN (1, 4, 15, 22) 
ORDER BY CommentID 
+0

嗨马克,感谢快速反应,但我没有完全理解。你创建了两个查询,并且在while循环中你只能调用第二个查询(注释)的结果? – 2012-08-08 14:12:00

+0

您有两个查询,A和B.首先将查询A发送到数据库。这将返回一个id列表(和其他一些数据)。使用ID列表构建查询B,然后发送该查询并获取结果。所以总共只发送两个查询。在任何时候你都不需要在循环中执行查询。你只需要循环来获取结果。 – 2012-08-08 14:18:17

+0

完美谢谢,有道理! – 2012-08-08 14:21:11