0
SELECT node .  * , node.page_id, (COUNT( parent.page_id ) - ( sub_tree.depth +1 )) AS depth
FROM pages AS node, pages AS parent, pages AS sub_parent, (
    SELECT node.page_id, (
    COUNT( parent.page_id ) -1
    ) AS depth
    FROM pages AS node, pages AS parent
    WHERE node.lft
    BETWEEN parent.lft
    AND parent.rgt
    AND node.page_id = '42'
    AND node.page_status =1
    GROUP BY node.page_id
    ORDER BY node.lft
    ) AS sub_tree
WHERE node.lft
BETWEEN parent.lft
AND parent.rgt
AND node.lft
BETWEEN sub_parent.lft
AND sub_parent.rgt
AND sub_parent.page_id = sub_tree.page_id
AND node.page_status =1
GROUP BY node.page_id
ORDER BY node.lft

「page_menu_order」行で結果を並べたいが、同じ深さ内にある。

そのため、子は階層構造のままですが、その深さの範囲内では、コスト/価格/または page_menu_order で並べ替えられます。

4

1 に答える 1

0

すでに階層データ構造を使用しており、このクエリを使用して同じフロア カテゴリを取得しています

SELECT node.* ,count( parent.id ) -1 AS depth FROM pages node 
JOIN pages parent ON node.lft BETWEEN parent.lft AND parent.rgt 
WHERE ...[ Your clause Statment ]... GROUP BY node.id HAVING depth = 0
于 2011-06-27T16:31:22.607 に答える