Het is een volkomen legitieme oplossing voor sommige ontwerpen.
Stel dat u een hiërarchie heeft van één-op-veel relaties zoals Customer
- Order
- Basket
- Item
- Price
, enz., die op elk niveau niet kan worden ingevuld:een Customer
heeft mogelijk geen Orders
, een Order
mag geen Baskets
. hebben , enz.
In dit geval geef je iets uit als:
SELECT *
FROM Customer c
LEFT OUTER JOIN
Order o
ON o.CustomerID = c.ID
LEFT OUTER JOIN
Basket b
ON b.OrderID = c.ID
…
Merk op dat het in sommige gevallen inefficiënt kan zijn en kan worden vervangen door EXISTS
of NOT EXISTS
(als u er alleen achter wilt komen dat de corresponderende records wel of niet bestaan in andere tabellen).
Zie dit artikel in mijn blog voor prestatiedetails:
- Onvolledige bestellingen vinden
- hoe u kunt profiteren van het vervangen van
LEFT JOIN
's metNOT EXISTS