Mysql EXISTS 无法识别之前 table 的别名

Mysql EXISTS not recognizing Alias of previous table

我尝试实现的是以下内容,我有一个带有数据的分层 table。 每个类别可能有 3 个子类别(最多)。 所以我想检查从属子类别是否有子类别(后代),以及在最后的 AND 条件下是否有产品。

问题是我的 ALIAS tree1 在最后一个 AND 条件下无法识别。

/* SQL Error (1054): Unknown column 'tree1.Node_ID' in 'on clause' */

这是我的查询,如有任何帮助,我们将不胜感激。

SELECT tree1.Node_ID, tree1.Bez,
IF(EXISTS(SELECT * FROM `301` as tree2 WHERE tree2.Node_Parent_ID <=> tree1.Node_ID LIMIT 1),1,0) as descendants
FROM `301` as tree1
        WHERE tree1.TreeTypNr = 1
        AND tree1.Node_Parent_ID <=> 100001
            AND EXISTS(
                SELECT * FROM `400`
                    INNER JOIN `302` ON `302`.Node_ID = tree1.Node_ID
                        WHERE `400`.GenArtNr = `302`.GenArtNr
                            AND `400`.VknZielNr = 18302
                            AND `400`.VknZielArt = 2
                                LIMIT 1
            )

我交换了两行:

`400`.GenArtNr = `302`.GenArtNr (put in ON cluase)

`302`.Node_ID = tree1.Node_ID (put in WHERE condition)

试试这个:

SELECT tree1.Node_ID, tree1.Bez,
IF(EXISTS(SELECT * FROM `301` as tree2 WHERE tree2.Node_Parent_ID <=> 
tree1.Node_ID LIMIT 1),1,0) as descendants
FROM `301` as tree1
    WHERE tree1.TreeTypNr = 1
    AND tree1.Node_Parent_ID <=> 100001
        AND EXISTS(
            SELECT * FROM `400`
                INNER JOIN `302` ON `400`.GenArtNr = `302`.GenArtNr
                    WHERE `302`.Node_ID = tree1.Node_ID
                        AND `400`.VknZielNr = 18302
                        AND `400`.VknZielArt = 2
                            LIMIT 1
        )