你知道 Facebook 主页是如何列出所有最近的帖子的吗?它显示发布的用户、他们的实际帖子以及附加到该帖子的前几条评论。这就是我想要实现的目标,但我很难构建一个可以收集所有数据的查询。
我有 3 个表:用途、帖子和评论。每个都有一个唯一的 ID,但它们引用彼此的 ID。即,Comments 表具有发布用户的 user_id 和它所附加到的帖子的 post_id 列。
此刻我正在查询 SQL 以收集所有帖子。我加入我的用户和评论表来了解发布者的用户名以及帖子的评论总数,如下所示:
$query = "
SELECT `posts`.`id`,`posts`.`message`,`posts`.`link`,
`posts`.`posted`,`posts`.`category`,`posts`.`user_id`,
`users`.`username`,
count(`comments`.`id`)
FROM `posts`
INNER JOIN `users`
ON `posts`.`user_id`=`users`.`id`
JOIN `comments`
ON `comments`.`post_id`=`posts`.`id`
WHERE `posts`.`group_id` = '$id'
AND `posts`.`category`='$filter'
GROUP BY `posts`.`id`
ORDER BY `posts`.`posted`
DESC
";
但是,与其查找帖子有多少评论,我更愿意阅读前几篇帖子。谁能想到只用一个查询来实现这一目标的方法?