0

尝试使用嵌套集模型。

检索单一路径,从“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 的代码可以正常工作。

4

2 回答 2

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`;

使用乔恩

于 2013-09-16T23:54:33.350 回答
0

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

于 2013-09-16T00:02:53.000 回答