2013-03-26 4 views
0

У меня возникли проблемы с поиском запроса для эффективной работы, который запрашивает только 1 таблицу. Вот пример таблицы:Данные запроса MYSQL и результаты объединения, группы и заказа

ID NAME  PARENT_ID SORT_ORDER 
1  Home  NULL   1 
2  Contact NULL   3 
3  Service NULL   2 
4  Service1 3   0 
5  Service3 3   2 
6  Service2 3   1 

То, что я хотел бы сделать, это вернуть данные из этой таблицы с результатами, которые имеют PARENT_ID, появляющееся под результатом с этим идентификатором, и иметь все результаты, то отобразить в SORT_ORDER. Вот как бы я хотел, чтобы запрос привел к вышеуказанным данным:

ID NAME  PARENT_ID SORT_ORDER 
1 Home  NULL   1 
3 Service NULL   2 
4 Service1 3   0 
6 Service2 3   1 
5 Service3 3   2 
2 Contact Null   3 

Любая обратная связь, чтобы это произошло, очень приветствуется.

С наилучшими пожеланиями,

Пол

ответ

0

Если я правильно понимаю вашу логику правильно, вы могли бы использовать это:

SELECT 
    t1.* 
FROM 
    yourtable t1 LEFT JOIN yourtable t2 
    ON t1.PARENT_ID = t2.ID 
ORDER BY 
    COALESCE(t2.SORT_ORDER, t1.SORT_ORDER), 
    t1.PARENT_ID IS NOT NULL, 
    SORT_ORDER 

Пожалуйста, смотрите скрипку here.

+0

Это работало именно так, как мне было нужно. Огромное спасибо! – Paul

Смежные вопросы