Acho que o que você está pedindo funcionará ao ingressar no Inicial tabela para Option_A e Option_B usando
LEFT JOIN
, que produzirá algo assim:Initial LEFT JOIN Option_A LEFT JOIN NULL
OR
Initial LEFT JOIN NULL LEFT JOIN Option_B
Código de exemplo:
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
Depois de ter feito isso, você 'ignora' o conjunto de NULLS. O truque adicional aqui está na linha SELECT, onde você precisa decidir o que fazer com os campos NULL. Se as tabelas Option_A e Option_B forem semelhantes, você poderá usar o
COALESCE
função para retornar o primeiro valor NON NULL (conforme o exemplo). A outra opção é que você simplesmente terá que listar os campos Option_A e os campos Option_B, e deixar o que estiver usando o
ResultSet
para lidar com a determinação de quais campos usar.