Es una solución perfectamente legítima para algunos diseños.
Digamos que tiene una jerarquía de relaciones de uno a muchos como Customer
- Order
- Basket
- Item
- Price
, etc., que se pueden vaciar en cualquier nivel:un Customer
puede no tener Orders
, un Order
no puede tener Baskets
, etc.
En este caso, emite algo como:
SELECT *
FROM Customer c
LEFT OUTER JOIN
Order o
ON o.CustomerID = c.ID
LEFT OUTER JOIN
Basket b
ON b.OrderID = c.ID
…
Tenga en cuenta que puede ser ineficiente en algunos casos y puede ser reemplazado por EXISTS
o NOT EXISTS
(si solo desea averiguar si los registros correspondientes existen o no existen en otras tablas).
Consulte este artículo en mi blog para obtener detalles sobre el rendimiento:
- Encontrar pedidos incompletos
- cómo beneficiarse de reemplazar
LEFT JOIN
's conNOT EXISTS