有以下三张表:
这个查询正在返回我的帖子,他们的回复都很好。
SELECT posts.title, posts.num, posts.status, posts.category, posts.content, posts.member_num, COUNT( posts_replies.blyrb_num ) AS count, COUNT( likes.comment_num ) AS likes_count
FROM posts_replies
INNER JOIN posts ON ( posts_replies.blyrb_num = posts.num )
LEFT JOIN likes ON ( likes.comment_num = posts_replies.num )
WHERE posts.status <>3
AND posts.access = 'Public'
AND (
posts.title LIKE '%dress%'
OR posts.content LIKE '%dress%'
)
GROUP BY posts.num但问题是,这个查询只返回有一些答复的帖子。我不想要这样的限制,我要所有的帖子,不管他们有没有答复。
我在这里做错了什么有什么想法吗?
谢谢
发布于 2013-03-03 08:53:28
在“从”和“第一次加入”中交换表,并将第一个“连接”更改为“左联接”,就可以做到这一点:
SELECT posts.title, posts.num, posts.status, posts.category, posts.content, posts.member_num, COUNT( posts_replies.blyrb_num ) AS count, COUNT( likes.comment_num ) AS likes_count
FROM posts
LEFT JOIN posts_replies ON ( posts_replies.blyrb_num = posts.num )
LEFT JOIN likes ON ( likes.comment_num = posts_replies.num )
WHERE posts.status <>3
AND posts.access = 'Public'
AND (
posts.title LIKE '%dress%'
OR posts.content LIKE '%dress%'
)
GROUP BY posts.num发布于 2013-03-03 08:53:48
要做的事情:
LEFT JOIN而不是INNER JOINPOST和posts_replies询问,
SELECT posts.title,
posts.num,
posts.status,
posts.category,
posts.content,
posts.member_num,
COUNT( posts_replies.blyrb_num ) AS count,
COUNT( likes.comment_num ) AS likes_count
FROM posts
LEFT JOIN posts_replies
ON ( posts_replies.blyrb_num = posts.num )
LEFT JOIN likes
ON ( likes.comment_num = posts_replies.num )
WHERE posts.status <> 3 AND
posts.access = 'Public'
AND
(
posts.title LIKE '%dress%'
OR posts.content LIKE '%dress%'
)
GROUP BY posts.numhttps://stackoverflow.com/questions/15184033
复制相似问题