Мисля, че това, което искате, ще работи, като се присъедините към Първоначалния таблица към двете Option_A и Опция_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
за да се справят с определянето кои полета да се използват.