sql >> Base de Datos >  >> RDS >> Sqlserver

Extraña definición de vista de SQL Server

SELECT ...
FROM   dbo.viewFirst vf
       INNER JOIN dbo.Table1 t1
         ON vf.MVOID = t1.MVOID
            AND vf.ValidFrom = t1.ValidFrom
       LEFT OUTER JOIN dbo.Table2 t2
                       RIGHT OUTER JOIN dbo.Table3 t3
                         ON t2.OID = t3.FKOID
                       LEFT OUTER JOIN dbo.Table4 t4
                         ON t3.ZVOID = t4.OID
                       LEFT OUTER JOIN dbo.Table5 t5
                                       INNER JOIN dbo.Table4 t6
                                         ON t5.OID = t6.BCOID
                         ON t4.ZVOID = t5.OID
         ON t2.AddressOID = t4.OID  

Esta sintaxis se cubre en el capítulo 7 de Inside SQL Server 2008 T-SQL Querying o consulte este artículo por Itzik Ben Gan y la carta de seguimiento por Lubor Kollar

Tener el ON cláusula para t2.AddressOID = t4.OID último, por ejemplo, significa que JOIN de t2 lógicamente sucede lo último. es decir, las otras uniones son lógicamente procesado primero y luego LEFT JOIN sucede contra el resultado de esas uniones.