一部の設計では、これは完全に正当なソリューションです。
Customer
のような 1 対多の関係の階層があるとします。 - Order
- Basket
- Item
- Price
など、どのレベルでも未記入の可能性があります:Customer
Order
がない可能性があります 、Order
Basket
を持たないことはできません など
この場合、次のようなものを発行します:
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
を置き換えることによる利点 's withNOT EXISTS