これを行うためのより良い方法があると感じていますが、それは頭に浮かびません。提案の後、私は馬鹿のように感じるだろうと思います. サブクエリの完全な外部結合が問題です。同じ外部キーを使用する 3 つの子テーブルを持つ親テーブルがあります。子テーブルの 1 つにデータがある場合、他の 2 つの子には同じ親 ID に関連するデータがあってはなりません。親のすべての行には、子テーブルの 1 つに 1 行のデータがあります。
データレイアウトの例、
親テーブル:
TRANSACTION
ID
1
2
3
4
5
6
子テーブル:
TRANSACTION_CH_A TRANSACTION_CH_B TRANSACTION_CH_C
T_ID_FK T_ID_FK T_ID_FK
1 null null
2 null null
null 3 null
null 4 null
null null 5
null null 6
これは私が思いついたクエリです:
SELECT * FROM TRANSACTION T
JOIN
(
SELECT
COALESCE (CH_A.T_ID_FK, CH_B.T_ID_FK, CH_C.T_ID_FK) AS T_ID
FROM IPAC_OWN.TRANSACTION_CH_A CH_A
FULL OUTER JOIN IPAC_OWN.TRANSACTION_CH_B CH_B ON CH_B.T_ID_FK = CH_A.T_ID_FK
FULL OUTER JOIN IPAC_OWN.TRANSACTION_CH_C CH_C ON CH_C.T_ID_FK = CH_A.T_ID_FK
)
CHILDREN ON CHILDREN.T_ID = T.ID
結果には、子テーブルのすべての行が含まれている必要があります。
前もって感謝します。