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 で並べ替えられます。