#1054 - 'on子句'中的未知列'node.id'

时间:2013-09-15 22:53:19

标签: mysql database hierarchical-data

尝试使用嵌套集模型。

检索单一路径,从'Pakken'开始,它的父母是'Heren',但由于这是分层数据,'Heren'可以拥有无​​限量的父母。

我坚持加入,给我这个错误

#1054 - Unknown column 'node.id' in 'on clause'

在此查询中,我尝试加入产品,其`products`.`category_id`必须等于节点的选定id

SELECT *
FROM `categories` AS `node`,
     `categories` AS `parent`
INNER JOIN `products` ON `node`.`id` = `products`.`category_id`
WHERE `node`.`lft` BETWEEN `parent`.`lft` AND `parent`.`rght`
        AND `parent`.`id` = '1'
ORDER BY `node`.`lft`;

代码在没有INNER JOIN的情况下正常工作。

2 个答案:

答案 0 :(得分:1)

通过更改查询中的小事来解决它,感谢peterm!

新查询:

SELECT `products`.*
FROM `categories` AS `node`
JOIN `categories` AS `parent`
INNER JOIN `products` ON `node`.`id` = `products`.`category_id`
WHERE `node`.`lft` BETWEEN `parent`.`lft` AND `parent`.`rght`
        AND `parent`.`id` = '1'
ORDER BY `node`.`lft`;

使用jon

答案 1 :(得分:0)

因为您使用“逗号”: 你的第一个表是表“节点”。 你的第二个表是“父”和“产品”的连接。所以“ON”必须包含这两个表中的列而不是“node”。 如果你真的想使用“node.id = products.category_id”,那么必须把它放在WHERE子句中。