mysql - on 子句错误中的未知列

标签 mysql sql join left-join cross-join

嘿伙计们,我已经很接近能够表示我希望显示的数据了 有问题的列是 a.state_Id。 根据我所做的研究,我了解到 a.State_Id 超出了范围。我的 sql 语句缺少什么部分?

如果我取出 a.State_ID = c.State_Id 只留下 b.Product_Id = c.Product_Id 那么数据就会显示,但我需要匹配状态和产品。

我知道我需要在某个地方添加另一个join,但我不知道如何添加。如果有人能帮助我那就太棒了!

SELECT a.state_id, 
       a.state_name, 
       a.state_abbreviatedname, 
       b.product_id, 
       b.product_name, 
       c.stateproduct_price 
FROM   states a, 
       products b 
       LEFT OUTER JOIN stateproducts c 
ON a.state_id = c.state_id AND b.product_id = c.product_id 

更新1

状态表已填充并包含以下字段:

State_Id
State_Name
State_AbbreviatedName

已填充的产品表包含基本产品。该表有以下字段:

Product_Id
Product_Name

每个州都会有相同的产品,但每种产品的价格会因每个州而异。这就是为什么我有 StateProducts 表。该表是空的,将由我创建的接口(interface)一一填充。 statesproducts 表将包含以下字段

State_Id //reference/relational field to be user for comparison
Product_Id //reference/relational field to be user for comparison
StateProduct_Price //new field

所以我知道我将在价格列中收到 NULL 值。

我已经能够返回一种国家和产品表的笛卡尔积。但是,我现在需要在该购物表的右侧附加每个组合的价格。 记住 stateproducts 表是空的,我将如何实现这一点?

最佳答案

我猜您有一个多对多关系,其中States可以有多个ProductsProducts > 可以位于不同的状态。因此,您需要将 States 连接到映射表 StateProducts 中,以便能够获取表 Products 上的产品。

SELECT  a.State_ID, 
        a.State_Name, 
        a.State_AbbreviatedName, 
        b.Product_Id, 
        b.Product_Name, 
        c.StateProduct_Price
FROM    States a
        INNER JOIN StateProducts c
            ON a.State_ID = c.State_Id
        INNER  JOIN Products b 
            ON b.Product_Id = c.Product_Id

要进一步了解有关联接的更多知识,请访问以下链接:

更新1

使用CROSS JOIN关键字,

SELECT a.state_id, a.state_name, a.state_abbreviatedname, b.product_id, b.product_name, c.stateproduct_price 
FROM   states a 
       CROSS JOIN products b 
       LEFT OUTER JOIN stateproducts c
          ON a.state_id = c.state_id AND 
             b.product_id = c.product_id

关于mysql - on 子句错误中的未知列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14815627/

相关文章:

java.sql.SQLException : No value especified for parameter 3 Java + Mysql

java - 在启动时恢复对象状态的最佳方法?

mysql - 获取外键引用的值

mysql - 如何在 SQL 中连接两个带有 id 和最近的下一个日期的表?

r - 查找数据框的补集(反连接)

mysql - 当我可以从中提取的表之一可能为空时,如何让我的 mysql 语句返回某些内容

php - 如果收到 x 则更新列,否则更新 y

sql - 如何在 R 中的 sql 查询中传递函数参数?

MySQL:从多个表,子查询中排名?

php - 如何在连接表时计算行数