SELECT文で同一項目を二つのテーブルから条件分岐してとってくる方法。
つまり、データがあればなければのSQL文。
それは、SELECT分で条件分岐として、同一項目をAが合った場合Aからとってきて、なかった場合Bからとってくる方法である。
これはCASE分で実現できる。
以下に例文を書く。 Aをもとに、BとCのテーブルを結合して引っ張ってくるSQLであるが、 AのTANUKICHIとRASCALという項目を、BのIDがAのIDと同一であったらBを入れ、違ったらAをそのまま入れるという文である。
つまり、Aのあるレコードに対して、そのレコードに対応する項目がBにあったら、Bを入れ、なかったらAを入れる文である。 (ちなみに、AとBはIDとNAMEの二つをキーとして結合させる想定。Cも同様)
SELECT A.ID, A.NAME, C.CD
CASE B.ID WHEN A.ID THEN B.CHIKINUTA ELSE A.CHIKINUTA END AS CHIKINUTA,
CASE B.ID WHEN A.ID THEN B.RASCAL ELSE A.RASCAL END AS RASCAL
FROM TableA A
LEFT OUTER JOIN TableB B ON B.ID= A.ID AND B.NAME = A.NAME
LEFT OUTER JOIN TableC C ON C.ID = A.ID AND C.NAME = A.NAME
となる。
ほらあなより愛をこめて ちきぬた
プロとしてのOracle PL/SQL入門 【第3版】(Oracle 12c、11g、10g対応) (Oracle現場主義)posted with amazlet at 14.05.10アシスト教育部
SBクリエイティブ
売り上げランキング: 149,815