Es ist eine absolut legitime Lösung für einige Designs.
Angenommen, Sie haben eine Hierarchie von 1:n-Beziehungen wie Customer
- Order
- Basket
- Item
- Price
, usw., die auf jeder Ebene leer sein können:ein Customer
dürfen keine Orders
haben , eine Order
kann keine Baskets
haben usw.
In diesem Fall geben Sie etwas aus wie:
SELECT *
FROM Customer c
LEFT OUTER JOIN
Order o
ON o.CustomerID = c.ID
LEFT OUTER JOIN
Basket b
ON b.OrderID = c.ID
…
Beachten Sie, dass es in einigen Fällen ineffizient sein kann und durch EXISTS
ersetzt werden kann oder NOT EXISTS
(wenn Sie nur herausfinden möchten, ob die entsprechenden Datensätze in anderen Tabellen existieren oder nicht existieren).
Einzelheiten zur Leistung finden Sie in diesem Artikel in meinem Blog:
- Unvollständige Bestellungen finden
- wie man vom Ersetzen von
LEFT JOIN
profitiert 's mitNOT EXISTS