如何在sql 3表查询中显示确切结果

问题描述 投票:-1回答:1

我的sql命令有问题。我尝试了许多方法来查询这3个表。

         post table
===========================
id | username | post | date 

内部有5个数据行

    profile table
======================
username | bio | name

里面还有5个数据

     like table
====================
post_id  | username

此表仅包含1个数据

这是我的简单社交媒体项目的数据库设计。如果单击“赞”按钮,则post.idusername将插入到like table中。我想计算like.post_id以便获得每个帖子的赞数。

我尝试过:

SELECT *, COUNT(like.post_id) AS post_like 
FROM like,post,profile 
WHERE post.username=profile.username AND like.post_id=post.id` 

问题在于,仅提取一个数据。我想在他的比赛中获取5个数据,这些数据来自post和profile以及post_like。

有人可以帮我解决这个问题吗?

php sql codeigniter-3
1个回答
0
投票

NeverFROM子句中使用逗号!始终使用正确的显式JOIN语法。

也就是说,我将使用相关的子查询来计数:

SELECT p.*, pr.*,
       (SELECT COUNT(*)
        FROM like l
        WHERE l.post_id = p.post_id
       ) AS post_like
FROM post p JOIN
     profile pr
     ON p.username = pr.id  -- this is really strange

JOINpost上的profile条件看起来不正确,但我将其保留了。

相关子查询避免了外部查询中的聚合,外部查询通常是性能的赢家。您想要likes(user_id)上的索引-但无论如何您都想要它。

© www.soinside.com 2019 - 2024. All rights reserved.