Ответ 1
Я думаю, что то, что вы просите, будет работать, присоединив таблицу Initial к 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
Как только вы это сделали, вы игнорируете набор NULLS. Дополнительный трюк здесь находится в строке SELECT, где вам нужно решить, что делать с полями NULL. Если таблицы Option_A и Option_B аналогичны, вы можете использовать функцию COALESCE
, чтобы вернуть первое значение NON NULL (в соответствии с примером).
Другой вариант заключается в том, что вам просто нужно будет указать поля Option_A и поля Option_B, а также использовать все, что используется ResultSet
для определения того, какие поля использовать.