Myślę, że to, o co prosisz, zadziała, gdy dołączysz do Początkowego tabela do obu Option_A i Option_B za pomocą LEFT JOIN
, co wygeneruje coś takiego:
Initial LEFT JOIN Option_A LEFT JOIN NULL
OR
Initial LEFT JOIN NULL LEFT JOIN Option_B
Przykładowy kod:
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
Kiedy już to zrobisz, „ignorujesz” zestaw wartości NULL. Dodatkowa sztuczka znajduje się w linii SELECT, w której musisz zdecydować, co zrobić z polami NULL. Jeśli tabele Option_A i Option_B są podobne, możesz użyć COALESCE
funkcja zwracająca pierwszą wartość NON NULL (jak w przykładzie).
Inną opcją jest to, że będziesz musiał po prostu wypisać pola Option_A i Option_B, i niech wszystko, co używa ResultSet
do obsługi określania, których pól użyć.