Table1:
Child Parent a
Bob Chris 2
Chris Kate 1
Shane Lana 3
Nala Bob 4
Table2:
b Talent
1 'something'
2 'nothing'
3 'something'
4 'nothing'
SELECT Child
FROM Table1
INNER JOIN Table2 ON (Table1.a = Table2.b)
WHERE Table2.Talent = 'something'
connect by prior Table1.Child = Table1.Parent
このコードは、親の行を返します
クリス
「Where」句が含まれていない場合、コードは次を返します。
Bob
Chris
Kate
Chris
Kate
Shane
Lana
etc
私が返したいのは、列ではなく行の次のものです。
ボブ・クリス
Chris は才能があり、Bob の親であるため、コードは親だけでなく、その親のクエリを作成した子も返します。このコードでは、次のようになります。
SELECT Child
FROM Table1
INNER JOIN Table2 ON (Table1.a = Table2.b)
WHERE Table2.Talent = 'something'
connect by prior Table1.Child = Table1.Parent
才能のある子供のクリスと、クリスの検索を開始した前の子供のボブがいるでしょう。たとえば、ボブがガラの子供で、ガラがクリスの子供だったとしても、ボブとクリスだけを結果として取得したいと思います。 .
条件:一時テーブルまたは任意の種類のテーブルを作成する権限がないため、一時テーブルなしでそれを行う方法がわからない場合を除き、ループを使用してこれを行うことはできません
「前の」ステートメントの前の子と、実際には前の子の親である新しい「子」を返す方法がわかりません。