我正在尝试将2个表连接到另一个表。我有这个SQL查询:
SELECT
desc_1.description,
desc_2.description,
Object.objID,
Item.itemID
FROM
Object,
Item
INNER JOIN Foo desc_1 ON desc_1.descID = Object.objDescID
INNER JOIN Foo desc_2 ON desc_2.descID = Item.itemDescID;
但是我收到以下错误:
ERROR 1054: Unkown column 'Object.objDescID' in 'on clause'
期望的输出:
description | description | objID | itemID |
------------+-------------+-------+--------+
"Daughter" | "Shoes" | 20 | 25 |
有谁知道为什么会这样?该列存在于表格中,我已经检查了拼写等。
答案 0 :(得分:1)
您无法混合传统隐式连接语法和显式连接语法。使用
SELECT desc_1.description,
desc_2.description,
Object.objID,
Item.itemID
FROM Object
INNER JOIN Item on { fill in the column that relate object and item }
INNER JOIN Foo desc_1 ON desc_1.descID = Object.objDescID
INNER JOIN Foo desc_2 ON desc_2.descID = Item.itemDescID;
答案 1 :(得分:0)
如果您的查询符合要求,请将,
替换为cross join
:
SELECT desc_1.description, desc_2.description,
Object.objID, Item.itemID
FROM Object CROSS JOIN
Item INNER JOIN
Foo desc_1
ON desc_1.descID = Object.objDescID INNER JOIN
Foo desc_2
ON desc_2.descID = Item.itemDescID;
documentation甚至解释了这一点,尽管我承认它有点难以找到:
但是,逗号运算符的优先级小于INNER JOIN,CROSS JOIN,LEFT JOIN等等。如果你混合使用逗号连接 当有连接条件时,其他连接类型,错误 form可能会出现'on子句'中的未知列'col_name'。信息 关于这个问题的处理将在本节后面给出。