Това е напълно законно решение за някои проекти.
Да кажем, че имате йерархия от отношения "един към много" като Customer - Order - Basket - Item - Price и т.н., които могат да бъдат непопълнени на всяко ниво:Customer може да няма Orders , Order не може да има Baskets и т.н.
В този случай издавате нещо като:
SELECT *
FROM Customer c
LEFT OUTER JOIN
Order o
ON o.CustomerID = c.ID
LEFT OUTER JOIN
Basket b
ON b.OrderID = c.ID
…
Имайте предвид, че може да е неефективно в някои случаи и може да бъде заменено с EXISTS или NOT EXISTS (ако искате само да разберете дали съответните записи съществуват или не съществуват в други таблици).
Вижте тази статия в моя блог за подробности за ефективността:
- Намиране на незавършени поръчки
- как да се възползвате от замяната на
LEFT JOINе сNOT EXISTS