【发布时间】:2015-04-17 06:02:03
【问题描述】:
选择帖子,最后 3 个 cmets 和所有 cmets 的计数 我的代码:
SELECT p.*, u.id, u.username username, u.usersurname usersurname, u.usermainphoto userphoto, GROUP_CONCAT(c.text SEPARATOR 'a!k@h#md%o^v&') commenttext,GROUP_CONCAT(c.likes SEPARATOR '-') commentlikes,GROUP_CONCAT(c.dislikes SEPARATOR '-') commentdislikes, GROUP_CONCAT(c.commentdate) commentdate, GROUP_CONCAT(u2.username) commentauthorname, GROUP_CONCAT(c.anonim) commentanonym, GROUP_CONCAT(c.id) commentid, GROUP_CONCAT(u2.id) commentauthorid, GROUP_CONCAT(u2.usersurname) commentauthorsurname, GROUP_CONCAT(u2.usermainphoto) commentauthorphoto, GROUP_CONCAT(c.commentphotoid) commentphotoid
FROM posts p
LEFT JOIN comments c ON c.post = p.postid AND c.commentdel=0
LEFT JOIN users u ON u.id = p.postauthorid
LEFT JOIN users u2 ON u2.id = c.author
WHERE p.postwallid = :id AND p.postdel=0
GROUP BY postid
ORDER BY postid DESC
它给了我所有的 cmets,但我只需要 3 个
【问题讨论】:
-
首先,对于 GROUP BY,您应该只选择 GROUP BY 部分中的原始字段,或者您选择的字段应该是聚合函数(最小值、最大值、总和等)。 .)。然后,我在您的查询中看不到 COUNT 函数,因此您将无法计算 cmets。
标签: php sql select pdo comments