gpt4 book ai didi

mysql : Join 4 table problem with the result

转载 作者:行者123 更新时间:2023-11-29 09:58:16 25 4
gpt4 key购买 nike

我有 4 个表并与所有表连接,然后我想显示如下数据:

pr_id |nama | jumlah_liker | id_user
1 |Milk | 5 | 1
2 |Choco| 0 | 1

查看表产品

pr_id | nama
1 | Milk
2 | Choco
3 | Salad

评论表喜欢者

id_produk | id_user
1 | 1
1 | 1
1 | 1
1 | 3
1 | 2

评论表featured_ukm

id | id_produk
1 | 1
2 | 2

但是我得到了sql记录

id_produk | nama  | jumlah_liker | id_user
1 | milk | 1 | 1 //problem row i dont get count all record id_produk
2 | choco | 0 | 1

SELECT produk.*, COUNT(liker.id_produk), liker.id_user
FROM produk
left join liker ON liker.id_produk = produk.pr_id AND liker.id_user = 1
INNER JOIN featured_ukm ON featured_ukm.id_produk = produk.pr_id
GROUP BY featured_ukm.id_produk

最佳答案

  • 编辑:我的建议是第一位的,实际上我将能够产生您确切要求的结果的内容放在底部

您似乎试图显示每个“特色产品”的点赞数。

尚不完全清楚您要尝试对用户 ID 执行什么操作,或者它在结果集中的用途是什么;这是一个查询,显示每个“特色产品”有多少个赞:

SELECT 
produk.*,
(SELECT IFNULL(COUNT(*), 0)
FROM liker WHERE liker.id_produk = produk.pr_id)
FROM featured_ukm F
INNER JOIN produk ON produk.pr_id = F.id_produk

这是一个查询,用于显示每个用户对每个产品的点赞数量

SELECT DISTINCT 
P.*,
(SELECT IFNULL(COUNT(*), 0) FROM liker WHERE liker.id_user = L.id_user),
IFNULL(L.id_user, 0)
FROM produk P
LEFT JOIN liker L ON L.id_produk = P.pr_id

如果您只想查看一位用户喜欢的项目,请添加:

WHERE L.id_user = 1

到最后。

以下查询显示每个用户 ID 的每个特色产品的点赞数:

SELECT DISTINCT 
P.*,
(SELECT IFNULL(COUNT(*), 0) FROM liker WHERE liker.id_user = L.id_user),
IFNULL(L.id_user, 0)
FROM produk P
LEFT JOIN liker L ON L.id_produk = P.pr_id
INNER JOIN featured_ukm F on F.id_produk = P.pr_id

要获得您正在查找的确切结果集(在您的示例中),您需要在查询中引用用户表。我假设您有一个,因为您正在引用用户 ID。出于本示例的目的,我将创建以下用户表。

id  |   name
----------------
1 | user_one
2 | user_two
3 | user_three

通过此表,以下查询将准确给出您正在查找的内容:

SELECT P.*, (SELECT IFNULL(COUNT(*), 0) FROM liker WHERE liker.id_produk = 
F.id_produk), user.id
FROM user
CROSS JOIN featured_ukm F
LEFT JOIN produk P ON F.id_produk = P.pr_id
WHERE user.id = 1

但是可以尝试一下我的其他一些示例查询。他们可能会更有帮助。

关于mysql : Join 4 table problem with the result,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53485229/

25 4 0