我有3个表:products
,buyers
和ratings
。
买家可以为我的产品评分,这将在评分中保存为一行(buyer_id
和product_id
),买家可以标记一种产品(每个买家最多一个最喜欢的产品)最喜欢的(ratings
中的二进制标志)。
我有一份所有买家的报告,想要在报告的每一行添加买家最喜欢的产品的名称(如果有的话),我试过这个:
SELECT b.*, p.name
FROM buyers b, products p
LEFT JOIN ratings r
ON r.buyer_id = b.id
and r.product_id = p.id
and r.isFav=1
不幸的是,这会引发错误('on子句'中的未知列'b.id')。所以我觉得我走错了路。 有什么东西可以帮助我完成我需要的东西吗?
答案 0 :(得分:4)
如果没有看到任何数据,最大的问题之一就是混合JOIN
语法,我可能会这样重写:
SELECT b.*, p.name
FROM buyers b
LEFT JOIN ratings r
ON b.id = r.buyer_id
LEFT JOIN products p
ON r.product_id = p.id
WHERE r.isFav=1