テーブルX
number doc
number item
number parentItem
データあり:
1, 1000, 0
1, 1010, 1000
1, 1020, 1000
1, 2000, 0
1, 2010, 2000
テーブル Y
number doc
number item
varchar2(16) SomeData
データあり:
1, 1000, "1000 Data"
1, 2000, "2000 Data"
次の SQL クエリを使用して、TableY から "SomeData" を取得します。
select x.doc, x.item, y.SomeData from TableX x
join TableY y
on y.doc = x.doc and y.item IN (x.item, x.ParentItem)
結果は次のようになります。
1, 1000, "1000 Data"
1, 1010, "1000 Data"
1, 1020, "1000 Data"
1, 2000, "2000 Data"
1, 2010, "2000 Data"
私の質問は次のとおりです。INステートメントは順番に評価されますか、それともOracleがたどるパスに依存しますか?
編集
TableX の項目 (1000 など) の TableY にエントリがある場合、この値は JOIN で最初に使用されますか、それとも ParentItem が最初に使用されますか? または、ParentItem の JOIN は、アイテムの JOIN が失敗した場合にのみ実行されますか?