【发布时间】:2018-09-24 08:40:08
【问题描述】:
我正在努力让这个查询正确。我有返回的表来显示昵称和两个关联的值。这些表格是: 用户(昵称、姓名等) postAuth(昵称,postID 等) postComm(昵称,comID 等)
如果 numPosts 和 numComments 中返回的两个值都为 NULL(也就是说,如果他们没有评论或创建帖子),我试图让它 NOT 包含用户。我不确定如何让它发挥作用。代码如下
SELECT u.nickname, pa.numPosts, pc.numComments
FROM Users u
LEFT JOIN
(SELECT pa.nickname, COUNT(pa.nickname) AS numPosts
FROM postAuthors pa
GROUP BY pa.nickname
)pa
ON u.nickname = pa.nickname LEFT JOIN
(SELECT pc.nickname, COUNT(pc.nickname) AS numComments
FROM postComments pc
GROUP BY pc.nickname
)pc
ON u.nickname = pc.nickname;
这创造了
Nickname | numPosts | numComments
bob 1 2
sally 2 1
tommy NULL NULL
etc.......
我不想显示tommy。
【问题讨论】:
-
如果我没记错的话,您似乎需要 INNER JOIN 而不是 LEFT 。
-
请帮助澄清 1. 这是帖子还是 cmets 类型要求 2. 两者都需要。在后一种情况下,通过在末尾添加 not null 子句来过滤查询