MYSQL 问题 - 连接不够

标签 mysql join

我有 3 个表:productsbuyersratings

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

最佳答案

在没有看到任何数据的情况下,最大的问题之一是您正在混合 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/

相关文章:

mysql - PhpMyAdmin 数据库中奇怪的表大小概述

php - 使用 ENGINE 子句在迁移中创建表失败

MySQL 连接显示表 a 的成员在表 b 中为空,但反之则不然

php - 查询输出的记录多于应有的记录

MySQL相似表的索引使用不一致: 'Using index' and 'Using where; Using index'

MySql - 选择 3 个表并排除

php - 连接mysql出错?

java - 如何在 Hibernate 中内连接两个独立实体

mysql - 如何用一个触发器执行多个操作

sql - 连接具有相同行数的两列