58 votes

Que signifie =* ?

J'essaie de tracer un certain SQL dans Microsoft Server. Je suis tombé sur une jointure qui utilise une convention qui ne m'est pas familière. Que signifie " =* " signifie ?

WHERE table1.yr =* table2.yr -1

71voto

OMG Ponies Points 144785

Ceci :

WHERE t.column =* s.column

...est une ancienne syntaxe de jointure externe TSQL (avant SQL Server 2005), et n'est pas une JOIN ANSI.

Référence : Jonction externe de SQL Server 2005 - Gotcha

25voto

Eric Petroelje Points 40734

Je crois que c'est une ancienne syntaxe indiquant une condition de jointure externe de la table 1 à la table 2.

Ancien style :

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

16voto

mjv Points 38081

Il s'agit de l'ancienne syntaxe pour exprimer les jointures.

11voto

HLGEM Points 54641

Cela signifie que le code doit être remplacé immédiatement ! Ce style de jointure est censé être une jointure droite. Malheureusement, elle sera parfois interprétée comme une jointure croisée, de sorte que les résultats de l'utilisation de cette jointure peuvent ne pas être corrects. De plus, cette syntaxe est dépréciée et ne pourra pas être utilisée dans la prochaine version du serveur SQl.

7voto

Bryan S. Points 943

Il s'agit de la syntaxe ANSI SQL 1989 pour le RIGHT OUTER JOIN, où *= serait le LEFT OUTER JOIN.

Vous devez également noter que l'utilisation de la syntaxe de jointure dans la clause WHERE est dépréciée en SQL 2008. http://scarydba.wordpress.com/2009/09/15/no-join-predicate/ <== Un article opportun sur ce sujet.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X