繁体   English   中英

“从”多个表,然后“向左联接”另一个表

[英]“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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM