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