Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Définition de vue étrange 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  

Cette syntaxe est traitée dans le chapitre 7 de Inside SQL Server 2008 T-SQL Querying ou voir cet article par Itzik Ben Gan et la lettre de suivi par Lubor Kollar

Avoir le ON clause pour t2.AddressOID = t4.OID dernier par exemple signifie que le JOIN de t2 arrive logiquement en dernier. c'est-à-dire que les autres jointures sont logiquement traité en premier puis le LEFT JOIN se produit contre le résultat de ces jointures.