J'essaie de tracer du SQL dans Microsoft Server. Je suis tombé sur une jointure qui utilise une convention qui m'est inconnue. Que signifie "=*
"?
WHERE table1.yr =* table2.yr -1
Ce:
WHERE t.column =* s.column
... est l'ancienne syntaxe de jointure externe TSQL (pre SQL Server 2005) et n'est pas une jointure ANSI.
Référence: SQL Server 2005 Outer Join Gotcha
Je crois que c'est une ancienne syntaxe indiquant une condition de jointure externe de table1 à table2
Style ancien:
SELECT * FROM table1, table2
WHERE table1.yr =* table2.yr -1
Nouveau style (SQL92):
SELECT * FROM table2
LEFT OUTER JOIN table1 ON table1.yr = table2.yr - 1
C'est l'ancienne syntaxe de style pour exprimer les jointures
Cela signifie que le code doit être remplacé immédiatement! Cette jointure de style est censée être une jointure droite. Malheureusement, il sera parfois interprété comme une jointure croisée, de sorte que les résultats de l'utilisation de cette jointure peuvent ne pas être corrects. En outre, cette syntaxe est obsolète et ne peut pas être utilisée dans la prochaine version du serveur SQl.
Il s'agit de la syntaxe ANSI SQL 1989 pour RIGHT OUTER JOIN, où * = correspond à LEFT OUTER JOIN.
Notez également que l'insertion de la syntaxe de jointure dans la clause WHERE est déconseillée dans SQL 2008. http://scarydba.wordpress.com/2009/09/15/no-join-predicate/ <== A temps article à ce sujet.
Il s'agit de l'ancien style de jointure qui était obsolète en ANSI SQL92. La nouvelle syntaxe utilise INNER et OUTER JOIN, qui joignent les tables en fonction d'expressions plutôt que d'égalité
UNE ??? La jointure externe est spécifiée en utilisant le symbole = * à la place de = dans la clause WHERE.
SELECT *
FROM table1, table2
WHERE table1.yr =* table2.yr -1
Signifie la même chose que ceci:
SELECT *
FROM
table2
LEFT OUTER JOIN
table1
ON table1.yr = (table2.yr - 1)
La syntaxe * est considérée comme obsolète , et n'est pas conforme aux normes ANSI.
Oracle a une construction similaire comme ceci:
WHERE table1.yr (+)= table2.yr
yeap, c'est une autre syntaxe pour une jointure externe gauche
à partir de table1 joint gauche externe table2 sur table1.yr = table2.yr - 1
Pour être clair et simple. Ceci est un opérateur de jointure externe SQL-92 ( plus d'infos )
Ne l'utilisez pas, c'est une très vieille école, mais c'est similaire à LEFT JOIN et à RIGHT JOIN. Tout ce qu'il fait est de dire de quel côté de la jointure se trouve le côté "Parent", donc les lignes de ce côté être considéré en premier.
Si vous essayez de l'exécuter sur SQL 2005, une erreur s'affichera, indiquant que vous devez l'exécuter en mode de compatibilité.