2013-09-25 2 views
0

Моя таблица имеет это значение, где Menu_id является идентификатором для этой конкретной строки, а Parent_Menu_id - это идентификатор, который сообщает идентификатору родителя для этого значения.перечисление родительских и дочерних значений вместе

Например, Parent_Menu_Id является NULL для Menu_Id 2, что означает, что он не имеет какой-либо из родителей, в то время как 3 имеет parent_menu_d 2, что означает, что 3 является ребенок 2.

enter image description here

Но , я столкнулся с одной проблемой, чтобы отобразить все родительское и дочернее значение вместе, что означает, что выход должен быть

Menu_id | Parent_Menu_id 
------------------------- 
2  | 
3  | 2 
9  | 2 
4  | 
5  | 4 
6  | 4 
7  | 
8  | 7 

Я попытался

select menu_id,parent_menu_id from menu_test mt where parent_menu_id=(select menu_id from menu_test where mt.parent_menu_id=menu_id) 

Но в этом случае я получаю только детские строки.

даже я попытался

select distinct menu_id,parent_menu_id from menu_test CONNECT BY PRIOR menu_id=parent_menu_id order by menu_id,parent_menu_id 

Еще же проблема перечисления вместе

Примечание: И результат выглядит так же, но когда вы увидите menu_id 9, то вы получите разницу и то, что я хочу ,

+0

: Я думаю, что данные, указанные вами за столом menu_test такой же, как желаемый результат, то, что вы хотите в итоге, пожалуйста, подробно ваш ответ –

+0

пожалуйста, проверьте menu_id 9 , на обоих выходах – Ravi

ответ

1

Вам просто нужно упорядочить все данные с id и parent_id вместе. Для этого просто используйте предложение order.

 select * from table order by nvl(Parent_Menu_id,Menu_id),Menu_id; 
+0

почти, но не совсем так же, как я хочу – Ravi

+0

http://sqlfiddle.com/#!4/5faa2/5 Он дал правильный результат. Не могли бы вы указать, какую разницу вы видите. –

+0

добавил еще один столбец в поле 'ORDER BY' и получил точный результат. :) – Ravi

2

Попробуйте это тоже

SELECT menu_id, parent_menu_id 
    FROM menu_test 
START WITH parent_menu_id IS NULL 
CONNECT BY PRIOR menu_id = parent_menu_id; 
+0

хорошо .. это тоже работает !! – Ravi

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