LEFT JOIN als SQL Query ohne JOIN

foobarbaz

Neuer Benutzer
Beiträge
2
Hey Leute!

Ich wollte mal fragen, wie man einen LEFT JOIN simulieren kann, ohne einen JOIN zu benutzen.
Ich arbeite mit der Testdatenbank von w3schools SQL Tryit Editor v1.5

Ich versuche folgenden SQL Befehl mit einem JOIN:

FROM Customers
LEFT JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;

Durch einen SELECT Befehl ohne JOIN zu simulieren. Zur Zeit kriege ich es nur hin den INNER JOIN zu simulieren, also die Schnittmenge beider Tabellen zu bekommen:

SELECT Customers.CustomerName, Orders.OrderID
FROM Customers, Orders
WHERE Customers.CustomerID=Orders.CustomerID
ORDER BY CustomerName;

Hilfe wäre mega super!
 
Zuletzt bearbeitet:
Werbung:
Anders gesagt: Dein Select ist auch ohne das Schlüsselwort JOIN per Definition ein Join. Technisch wird die Datenbank das auch im Hintergrund als Join behandeln, es steht halt nur nicht explizit in der Syntax.

Um einen LEFT JOIN durchzuführen ohne JOIN als Syntax zu verwenden müsstest du einen INNER JOIN verwenden wie in deinem schon genannten Beispiel und den Rest mit UNION ALL dran basteln:
Code:
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers, Orders
WHERE Customers.CustomerID=Orders.CustomerID
UNION ALL
SELECT Customers.CustomerName, NULL AS OrderID
FROM Customers
WHERE Customers.CustomerID NOT IN ( SELECT Orders.CustomerID FROM Orders )
Die ganze Sache hat allerdings keinen Mehrwert.
 
Und ist nebenbei nicht identisch mit einem LEFT JOIN
Es entspricht aber einem INNER JOIN + den zusätzlichen Select.
Sobald das Feld CustomerID in einer einzigen Zeile den Wert NULL hat, ist das komplette Ergebnis NULL.
Korrekt, ließe sich aber abfangen, ich wollte es nur nicht zu kompliziert machen. Alternativ kann man auch mit NOT EXISTS arbeiten, dann joint man aber schon wieder im Subselect.

Die Frage ist was soll hier erreicht / gewonnen werden.
 
Werbung:
Zurück
Oben