Penso che ciò che chiedi funzionerà unendoti alla Iniziale tabella a entrambi Opzione_A e Opzione_B utilizzando LEFT JOIN
, che produrrà qualcosa del genere:
Initial LEFT JOIN Option_A LEFT JOIN NULL
OR
Initial LEFT JOIN NULL LEFT JOIN Option_B
Codice di esempio:
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
Una volta fatto questo, 'ignori' il set di NULLS. Il trucco aggiuntivo qui è nella riga SELECT, dove devi decidere cosa fare con i campi NULL. Se le tabelle Option_A e Option_B sono simili, puoi utilizzare il COALESCE
funzione per restituire il primo valore NON NULL (come nell'esempio).
L'altra opzione è che dovrai semplicemente elencare i campi Option_A e Option_B, e lasciare che qualunque cosa stia usando il ResultSet
per gestire la determinazione dei campi da utilizzare.