2014-09-02 3 views
1

Я пытаюсь придумать запрос SQL, чтобы прочитать рекурсивные данные, как показано ниже:Sql рекурсивный запрос читать иерархические данные

ParentId ChildId 
    1   2 
    2   3 
    3   4 
    4   5 
    4   6 
    8   9 

Если ParentId предусмотрено, то запрос должен вернуть все ChildId с в рекурсивный способ.

Пример: parentId =1, result = {2, 3, 4, 5, 6}

Я обнаружил, что connect_by_root и connect by prior это то, что я должен быть, вероятно, использовать его. Однако я не могу понять это правильно.

База данных: Oracle и DB2

+0

это будет хорошее место для начала - http://docs.oracle.com/cd/B19306_01/server.102/b14200/queries00 3.htm – Bulat

+0

Существует отличный Webminar о том, как использовать SQL для иерархии в DB2: http://www.idug-db2.com?commid=105565 – AngocA

ответ

0

Это сделал:

SELECT childid 
    FROM btab 
    START WITH parentId = 1 
    CONNECT BY PRIOR childId = parentId; 

Благодаря #Bulat & #AngocA, для указателей

0

Это должно сделать трюк:

SELECT ChildId, ParentId, LEVEL 
    FROM myTable 
    CONNECT BY PRIOR ChildId = ParentId; 
+0

Nope doesnot !!! – Nohsib

+1

"Nope doesnot" что именно? более подробная информация будет полезной – Bulat

+0

Ему нужно было «Начать с», – Nohsib

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