我如何计算另一张桌子上的所有喜欢?

How can i count all likes from another tabel?

我已经做到了这一点,即我的 SQL 会在 tbl_posts 中至少有一个赞的情况下回复所有帖子。但是现在我想知道如何让它工作,所以它 returns 所有帖子,即使他们没有喜欢。点赞通过外键存储在 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 设置:/

来自德国的问候!

您需要按 tbl_posts.id 分组才能获得每个 post 的结果。 如果您不这样做,所有结果将合并为一行。

a fiddle 每个 post 的结果,如果没有喜欢的结果是 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

找到解决此类问题的好方法:

通过首先获取仅包含点赞数的 post 来简化问题。稍后添加其他连接,但首先关注获得最基本的结果。