我有一个表,其中包含层次结构中的值。 我想知道是否有人知道一个查询,在这里我可以遍历每一行以找到它的ID,然后搜索具有相同值的PARENTID的行。例如:
带桌子
ID PARENTID LEVEL VALUE
-------------------------------
1 0 COUNTRY USA
2 1 CITY NYC
3 1 CITY LA
4 2 TEAM GIANTS
5 2 TEAM JETS
6 3 TEAM RAMS
7 3 TEAM CHARGERS
我可以先搜索ID:2(NYC),然后从那里找到该城市的所有球队。类似的东西(但我不知道我需要做的总循环)
SELECT ID2,VALUE FROM TABLE1 WHERE PARENTID = ID1;
给我:
3,LA
6,RAMS
7,CHARGERS
答案 0 :(得分:1)
connect by
是遍历这样的层次结构的常用方法。如果添加start with
,则可以选择层次结构中的起点。
SELECT table1.*, level
FROM table1
START WITH id = 3
CONNECT BY parentid = PRIOR id;
请注意,level
是一个Oracle关键字,它将告诉您到目前为止已经完成了多少个循环。我不建议将其用作列名。 There's some other pseudocolumns and functions you might find helpful too。