例如,如果您在查询中有> 5个左联接,则是一个代码闻到有…
对于某些设计来说,这是一个完全合法的解决方案。
假设你有一个一对多的关系就像一个层次Customer- Order- Basket- Item-Price等,这可以在任何级别的空缺:一个Customer可以没有Orders,一个Order可以没有Baskets,等等。
Customer
Order
Basket
Item
Price
Orders
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(如果您只想弄清楚对应的记录在其他表中是否存在)。
EXISTS
NOT EXISTS
有关性能的详细信息,请参见我的博客中的这篇文章:
LEFT JOIN