1

ネストされたセットモデルを実装しようとしているので、次のクエリがあります

SELECT 
    n.CategoryID, 
    CategoriesI18n.CategoryName, 
    COUNT(*)-1 AS level FROM Categories AS n, 
    Categories AS p LEFT JOIN CategoriesI18n ON (
        n.CategoryID=CategoriesI18n.CategoryID AND CategoriesI18n.Locale="en-US"
    ) WHERE n.lft BETWEEN p.lft AND p.rgt GROUP BY n.lft ORDER BY n.lft;

ツリーを選択すると、現在のカテゴリの多言語行である CategoriesI18n テーブルに参加する必要があります。しかし、私はこのエラーが発生します

Unknown column 'n.CategoryID' in 'on clause'

そして、私はその理由を知りません。もしかしたら、Categories AS p が最初のエイリアスを上書きするのでしょうか?

4

2 に答える 2

2

気にしないで、私はそれを理解しました。ネストされた選択を行う必要がありました。

SELECT n.CategoryID, n.CategoryName, COUNT(*)-1 AS level 
    FROM (
        SELECT Categories.CategoryID AS CategoryID,  Categories.lft AS lft,  Categories.rgt AS rgt, CategoriesI18n.CategoryName AS CategoryName FROM Categories LEFT JOIN CategoriesI18n ON (Categories.CategoryID=CategoriesI18n.CategoryID AND CategoriesI18n.Locale="bg-BG")
        ) AS n, Categories AS p 
    WHERE n.lft BETWEEN p.lft AND p.rgt GROUP BY n.lft ORDER BY n.lft;
于 2013-11-10T10:47:42.347 に答える
0

「Categories AS p LEFT JOIN CategoriesI18n」、結合されたカテゴリのエイリアスは「n」ではなく「p」です

于 2013-11-10T09:54:24.527 に答える