我有三个表,用户,文章和评论,如下所示:
用户:
id | username
文章:
id | user_id | title | content | time
评论:
id | article_id | content | time
user_id
是文章作者在Users
中的用户ID; article_id
是评论文章在Articles
中的ID。
现在我想列出文章,展示他们的作家username
,title
,content
,time
和number of comments
。 username
来自Users
,number of comments
来自Comments
,通过计算某些内容,其余字段来自Articles
。
如何在单个语句中编写查询?
我试过
SELECT a.*, count(c.id) AS NUM_COMMENTS, u.username
FROM Commetns c
JOIN Users u
INNER JOIN Articles a
WHERE a.id = c.article_id AND u.id=a.user_id
GROUP BY a.id
但这只会返回带条评论的文章。我希望还列出没有评论的文章。
答案 0 :(得分:1)
您需要left join
才能获得没有评论的文章
select
a.*,
count(c.id) AS NUM_COMMENTS,
u.username
from Articles a
JOIN Users u on u.id=a.user_id
left join Commetns c on c.article_id = a.id
GROUP BY a.id