Ik denk dat wat je vraagt zal werken door deel te nemen aan de Initial tabel naar beide Option_A en Option_B met behulp van LEFT JOIN
, wat zoiets als dit oplevert:
Initial LEFT JOIN Option_A LEFT JOIN NULL
OR
Initial LEFT JOIN NULL LEFT JOIN Option_B
Voorbeeldcode:
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
Als je dit eenmaal hebt gedaan, 'negeer' je de set NULLS. De extra truc hier zit in de SELECT-regel, waar u moet beslissen wat u met de NULL-velden wilt doen. Als de tabellen Option_A en Option_B vergelijkbaar zijn, kunt u de COALESCE
gebruiken functie om de eerste NON NULL-waarde te retourneren (zoals in het voorbeeld).
De andere optie is dat je gewoon de Option_A-velden en de Option_B-velden moet vermelden, en laat wat de ResultSet
gebruikt om te bepalen welke velden moeten worden gebruikt.