我有 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”)。所以我觉得我走错了路。 有什么东西可以帮助我完成我需要的吗?
最佳答案
在没有看到任何数据的情况下,最大的问题之一是您正在混合 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
关于MYSQL 问题 - 连接不够,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12498077/