Det er en helt legitim løsning til nogle designs.
Lad os sige, at du har et hierarki af en-til-mange-relationer som f.eks. Customer - Order - Basket - Item - Price , osv., som kan udfyldes på ethvert niveau:en Customer har muligvis ingen Orders , en Order kan ikke have nogen Baskets osv.
I dette tilfælde udsteder du noget 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
…
Bemærk, at det i nogle tilfælde kan være ineffektivt og kan erstattes med EXISTS eller NOT EXISTS (hvis du kun vil finde ud af, at de tilsvarende poster findes eller ikke findes i andre tabeller).
Se denne artikel i min blog for detaljer om ydeevne:
- Sådan finder du ufuldstændige ordrer
- hvordan du kan drage fordel af at erstatte
LEFT JOIN's medNOT EXISTS