0

我有 3 张桌子productsbuyersratings

买家可以对 i 产品进行评分,这将在评分中保存为一行(使用buyer_idproduct_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”)。所以我觉得我走错了路。有什么可以帮助我完成我需要的吗?

4

1 回答 1

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 
于 2012-09-19T15:40:19.840 回答