3

これに似たオラクルテーブルがあります

テーブル名:メモ

NoteID(PK)        NoteText    ParentNoteID
1                 x           - 
2                 y           1
3                 z           2

ここでは、notetext の上で like クエリを実行する必要があります。たとえば、note.note_text like '%z%' と入力すると、3 番目のレコードだけが抽出されます。

親のレコードも取得したいと思います。つまり、クエリのように一致する 3 番目のレコードを取得した後、parentNoteID を見て戻る必要があります。したがって、3 番目のレコードの親メモは 2 で、2 の親レコードは 1 です。したがって、結果は 3 つのレコードすべてを取得する必要があります。

これを拡張するには、like クエリが 2 つの子レコードに一致する場合、明らかに、両方の親レコードをすべて取得する必要があります。

例:

NoteID(PK)  NoteText    ParentNoteID
1           x           -  
2           y           1
3           z           2
4           a           -
5           b           4
6           z           5

note.note_text like '%z%'上記の6つのレコードすべてをプルする必要があります。

よろしくお願いします。

4

1 に答える 1

6

これを行うには connect by を使用します。

たとえば、次のようなもの

select *
  from tbl1
 start with note_text like '%z%'
 connect by note_id = prior parent_note_id

それをするでしょう。

フィドルの例: http://sqlfiddle.com/#!4/0c6ea/1

于 2013-04-02T13:36:40.483 に答える