MySQL, PHP, MPTT: сортировка детей по весу / стоимости / menu_order - PullRequest
0 голосов
/ 27 июня 2011
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.

1 Ответ

0 голосов
/ 27 июня 2011

Я уже использую иерархическую структуру данных и использую этот запрос для извлечения той же категории этажа

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
...