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