我有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
答案 0 :(得分:1)
您似乎正在尝试显示每个“精选产品”的喜欢程度。
尚不清楚您要使用用户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
但是请尝试其他一些示例查询。他们可能会更有帮助。