我如何计算来自另一个表格的所有喜欢?

时间:2016-04-30 19:43:42

标签: mysql sql database innodb

我已经明白我的SQL在至少有一个喜欢的时候会从tbl_posts中恢复所有帖子。 BUt现在我想知道我怎么能让它工作所以它返回所有帖子,即使他们没有喜欢。喜欢的内容通过外键存储在tbl_posts_likes中(post_id,user_id作为tbl_posts_likes中的列)。我的SQL目前看起来像这样:

SELECT tbl_posts.*,tbl_users.name,COUNT(tbl_posts_likes.user_id) AS likes
FROM tbl_posts 
INNER JOIN tbl_users ON tbl_posts.user_id = tbl_users.id 
LEFT JOIN (SELECT * FROM tbl_friends fr WHERE fr.friend_id = '1') AS fr ON tbl_posts.user_id = fr.user_id 
RIGHT JOIN tbl_posts_likes ON tbl_posts_likes.post_id = tbl_posts.id
WHERE tbl_posts.user_id = '1' OR tbl_posts.user_id = fr.user_id 
ORDER BY tbl_posts.created_at DESC

如果你可以帮助我,那将是很好的,因为我正在寻找一个有效的SQL设置:/

来自德国的问候!

1 个答案:

答案 0 :(得分:2)

您需要按tbl_posts.id进行分组才能获得每篇文章的结果。 如果你不这样做,所有结果都会合并成一行。

每个帖子的结果为fiddle,如果没有,则结果为0。

SELECT tbl_posts.*,tbl_users.name,COUNT(tbl_posts_likes.user_id) AS likes
FROM tbl_posts 
INNER JOIN tbl_users ON tbl_posts.user_id = tbl_users.id 
LEFT JOIN tbl_posts_likes 
ON tbl_posts.id = tbl_posts_likes.post_id
group by tbl_posts.id

找到像这样的问题的解决方案的好方法:

通过首先只获得一些喜欢的帖子来简化问题。稍后添加其他联接,但首先关注获得最基本的结果。