首页 > 解决方案 > Mysql : Join 4 table 问题的结果

问题描述

我有 4 个表格并加入所有表格,然后我想在这里显示数据:

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

复习表 produk

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

评论表喜欢者

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

评论表 features_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

标签: mysql

解决方案


  • 编辑:我的建议是第一,我实际上把会产生你确切要求的结果的东西放在底部

您似乎试图显示每个“特色产品”有多少喜欢。

尚不完全清楚您要对用户 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

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

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

但是玩弄我的其他一些示例查询。他们可能更有帮助。


推荐阅读