我正在尝试为正在处理的网站创建一个新闻页面。我决定我想使用正确的MySQL查询(意思是COUNT(id)和连接,而不是多个查询或num_rows。)我使用的是一个PDO包装器,它应该可以正常工作,而且直接通过MySQL CLI应用程序。MySQL多个左连接
基本上我有3张桌子。一个持有这个消息,一个持有评论,一个持有用户。我的目标是创建一个页面,显示新闻帖子标题,正文,作者和日期的所有内容(稍后分页)。这工作得很好,当我用第二个查询来获取用户名,但后来我决定我宁愿使用JOIN。
那么问题是什么?好吧,我需要两个连接。一个是获取作者的用户名,另一个是获取评论的数量。当我简单地写作者的用户名时,所有工作都按预期进行。显示新闻表中的所有行(有2个)。但是,当我为评论行添加第二个LEFT JOIN时,我最终只收到一条来自新闻的记录(请记住,有2条记录)和COUNT(comments.id)给我2条(它应该显示1,因为我有每个帖子的评论。)
我在做什么错?为什么它只显示一个新闻帖子,并说有两个评论,当有两个新闻帖子,每个新闻帖子都有一个评论?
SELECT news.id, users.username, news.title, news.date, news.body, COUNT(comments.id)
FROM news
LEFT JOIN users
ON news.user_id = users.id
LEFT JOIN comments
ON comments.news_id = news.id
而且,只是为了确保有关的另一件事,我的左边加盟的评论是让所有的职位,无论他们是否有意见或不正确的方式,正确的吗?或者这是一个正确的加入?哦,最后一件事......如果我将news.news_id = news.id切换到news.id = comments.news_id,我会得到0个结果。
你有没有使用GROUP BY子句?我的菜鸟双连接不起作用,我试图找出原因。 – 2014-06-13 21:51:35
谢谢 - 它帮助我解决了一个难以花费3个小时的问题 - 只需几分钟即可解决问题 – Muhammad 2015-05-06 19:07:13
非常感谢。也解决了我的问题:)。 – C4u 2016-02-05 10:03:08