Ich versuche, 3 Tabellen LEFT JOIN wie so:Wie erstelle ich einen bedingten LEFT JOIN?
DECLARE @CustomerID AS INT;
DECLARE @ProductID AS INT;
SELECT *
FROM table1 t1
LEFT JOIN table2 t2 ON t1.id = t2.id
LEFT JOIN table3 t3 ON t2.loc = t3.loc
WHERE t1.id = @ProductID
AND (t2.loc = t3.loc OR t2.loc IS NULL)
AND (t3.cid = @CustomerID OR t3.cid IS NULL)
Es gibt 4 grundlegende Fälle Ich versuche zu lösen:
- <> 0 und @ProductID existiert @CustomerID in t1 nur
- @CustomerID <> 0 und @ProductID existiert in T1 und t2
- @CustomerID = 0 und @ProductID existiert in t1 nur
- @ CustomerID = 0 und @ProductID existiert in T1 und T2
Der obige Code für Fälle funktioniert 1-3, gibt aber nichts für den Fall, 4. Ich denke, es ist, weil das letzte LEFT JOIN Pausen (obwohl Daten in beide vorhanden t1 und t2 für diese @ProductID).
Gibt es eine Möglichkeit, den zweiten LINKEN JOIN ohne IF ... ELSE-Logik bedingungsabhängig zu machen?
Danke, das tat es! –