Table1
Name  Code2  Code3  Code4
----  -----  -----  -----
aaaa    501    601    701
bbbb    502    602    999
cccc    503    999    702
dddd    999    603    703
eeee    999    999    999
Table2        Table3        Table4
Code  Name    Code  Name    Code  Val
----  ----    ----  ----    ----  ---
 501  AAAA     601  DDDD     701  123
 502  BBBB     602  EEEE     701  456
 503  CCCC     603  FFFF     701  789
                             702  321
                             702  456
                             703  987
Table1のCode2(Table2の外部キー)に紐づくTable2のNameの値、
Table1のCode3(Table3の外部キー)に紐づくTable3のNameの値、
Table1のCode4に紐づくTable4のValの値の最大値と最小値を取得する。
出力結果
Name  Code2  Code3  Code4  Name2  Name3  maxVal  minVal
----  -----  -----  -----  -----  -----  ------  ------
aaaa   501    601    701   AAAA   DDDD      789     123
bbbb   502    602    999   BBBB   EEEE     null    null
cccc   503    999    702   CCCC   null      456     321
dddd   999    603    703   null   FFFF      987     987
eeee   999    999    999   null   null     null    null
create table Table1(Name,Code2,Code3,Code4) as select 'aaaa',501,601,701 from dual union select 'bbbb',502,602,999 from dual union select 'cccc',503,999,702 from dual union select 'dddd',999,603,703 from dual union select 'eeee',999,999,999 from dual; create table Table2(Code primary key,Name) as select 501,'AAAA' from dual union select 502,'BBBB' from dual union select 503,'CCCC' from dual; create table Table3(Code primary key,Name) as select 601,'DDDD' from dual union select 602,'EEEE' from dual union select 603,'FFFF' from dual; create table Table4(Code,Val) as select 701,123 from dual union select 701,456 from dual union select 701,789 from dual union select 702,321 from dual union select 702,456 from dual union select 703,987 from dual;
select Name,Code2,Code3,Code4,
(select b.Name from Table2 b where b.Code=a.Code2) as Name2,
(select b.Name from Table3 b where b.Code=a.Code3) as Name3,
cursor(select max(val) as maxVal,min(val) as minVal from Table4 b
        where b.code=a.Code4) as c
from Table1 a;
外部結合には、Left Joinや、(+)演算子を使用する方法がありますが 外部キーに紐づく値を取得するのであれば、エンティティ間が多対一なので、 select句でのスカラー問い合わせで取得可能です。 また、select句に記述することにより、SQL文の行数が減る上に、 SQLを上から下に読むだけで、SQLが理解できるので、 他の外部結合の構文よりも可読性が高くなります。