Det är en helt legitim lösning för vissa mönster.
Säg att du har en hierarki av en-till-många-relationer som Customer - Order - Basket - Item - Price , etc., som kan fyllas i på valfri nivå:en Customer kanske inte har några Orders , en Order kan inte ha några Baskets osv.
I det här fallet utfärdar du något som:
SELECT *
FROM Customer c
LEFT OUTER JOIN
Order o
ON o.CustomerID = c.ID
LEFT OUTER JOIN
Basket b
ON b.OrderID = c.ID
…
Observera att det kan vara ineffektivt i vissa fall och kan ersättas med EXISTS eller NOT EXISTS (om du bara vill ta reda på att motsvarande poster finns eller inte finns i andra tabeller).
Se den här artikeln i min blogg för information om prestanda:
- Hitta ofullständiga beställningar
- hur man drar nytta av att ersätta
LEFT JOINär medNOT EXISTS