イニシャルに参加することで、あなたが求めているものがうまくいくと思います 両方のOption_Aへのテーブル およびOption_B LEFT JOIN
を使用する 、次のようなものが生成されます:
Initial LEFT JOIN Option_A LEFT JOIN NULL
OR
Initial LEFT JOIN NULL LEFT JOIN Option_B
コード例:
SELECT i.*, COALESCE(a.id, b.id) as Option_Id, COALESCE(a.name, b.name) as Option_Name
FROM Initial_Table i
LEFT JOIN Option_A_Table a ON a.initial_id = i.id AND i.special_value = 1234
LEFT JOIN Option_B_Table b ON b.initial_id = i.id AND i.special_value <> 1234
これを実行すると、NULLのセットを「無視」します。ここでの追加のトリックはSELECT行にあり、ここでNULLフィールドをどうするかを決定する必要があります。 Option_AテーブルとOption_Bテーブルが類似している場合は、COALESCE
を使用できます。 (例のように)最初のNONNULL値を返す関数。
もう1つのオプションは、Option_AフィールドとOption_Bフィールドをリストし、ResultSet
を使用しているものは何でも許可するだけです。 使用するフィールドの決定を処理します。