[英]“From” multiple tables and then “LEFT JOIN” an other table
我有这个查询,可以很好地工作:
SELECT node.id, CONCAT( REPEAT( ' ', (COUNT(parent.name_en) - 1) ), node.name_en) AS name_en_spaced, node.name_en as name_en, node.name_ar as name_ar, node.rgt as rgt,node.lft as lft, node.filter as filter
FROM category AS node,
category AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
GROUP BY node.id
ORDER BY node.lft
当我添加LEFT JOIN
(我只是想知道product
表中是否有与特定category
相关的记录,无论它们是多少或多少):
SELECT p.price,node.id, CONCAT( REPEAT( ' ', (COUNT(parent.name_en) - 1) ), node.name_en) AS name_en_spaced, node.name_en as name_en, node.name_ar as name_ar, node.rgt as rgt,node.lft as lft, node.filter as filter
FROM category AS node,
category AS parent
LEFT JOIN product AS p on node.id = p.category_id
WHERE node.lft BETWEEN parent.lft AND parent.rgt
GROUP BY node.id
ORDER BY node.lft
我收到此错误#1054 - Unknown column 'node.id' in 'on clause'
令人困惑。 可以帮我!
您正在混合两种编写联接的方法。 我认为,最好始终指定您的联接,因为在此之后更容易阅读:
SELECT p.price,node.id,
CONCAT( REPEAT( ' ', (COUNT(parent.name_en) - 1) ), node.name_en) AS name_en_spaced,
node.name_en as name_en,
node.name_ar as name_ar,
node.rgt as rgt,
node.lft as lft,
node.filter as filter
FROM category AS node,
LEFT JOIN category AS parent
ON node.lft BETWEEN parent.lft AND parent.rgt
AND node.XXX = parent.XXX
LEFT JOIN product AS p on node.id = p.category_id
GROUP BY node.id
ORDER BY node.lft
您正在混合两种类型的联接(交叉和左联接)。 尝试这个:
SELECT p.price,node.id, CONCAT( REPEAT( ' ', (COUNT(parent.name_en) - 1) ), node.name_en) AS name_en_spaced, node.name_en as name_en, node.name_ar as name_ar, node.rgt as rgt,node.lft as lft, node.filter as filter
FROM category AS node
LEFT JOIN category AS parent ON node.id = parent.id
LEFT JOIN product AS p on node.id = p.category_id
WHERE node.lft BETWEEN parent.lft AND parent.rgt
GROUP BY node.id
ORDER BY node.lft
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.