Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Strana definizione della vista di 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  

Questa sintassi è trattata nel capitolo 7 di All'interno di SQL Server 2008 T-SQL Query o vedere questo articolo di Itzik Ben Gan e la lettera di follow-up di Lubor Kollar

Avere il ON clausola per t2.AddressOID = t4.OID last per esempio significa che il JOIN di t2 logicamente accade per ultimo. cioè gli altri join sono logicamente elaborato prima, quindi il LEFT JOIN accade contro il risultato di quei Join.