从子记录中获取所有父记录

esh*_*haa 2 oracle

我有一个类似于此的oracle表

表名:注意

NoteID(PK)        NoteText    ParentNoteID
1                 x           - 
2                 y           1
3                 z           2
Run Code Online (Sandbox Code Playgroud)

在这里,我需要在notetext上面执行类似的查询,例如'%z%'这样的note.note_text,它会单独提取第三条记录.

我希望在获得第三条记录之后拉出它的父母的记录.通过查询匹配,我需要通过查看parentNoteID返回.所以第3条记录的父记录是2,父记录2是1.所以结果应该获取所有三个记录.

为了扩展这一点,如果我的like查询匹配两个子记录,显然它应该获得两者的所有父记录.

例:

NoteID(PK)  NoteText    ParentNoteID
1           x           -  
2           y           1
3           z           2
4           a           -
5           b           4
6           z           5
Run Code Online (Sandbox Code Playgroud)

note.note_text like '%z%' 应拉,以上所有6条记录.

在此先感谢Eswar.

Daz*_*zaL 5

你可以使用connect by来做到这一点.

比如说像

select *
  from tbl1
 start with note_text like '%z%'
 connect by note_id = prior parent_note_id
Run Code Online (Sandbox Code Playgroud)

会做的.

示例小提琴:http://sqlfiddle.com/#!4/0c6ea/1