it-swarm.com.de

Was bedeutet = *?

Ich versuche, SQL in Microsoft Server zu verfolgen. Ich bin auf einen Join gestoßen, der eine mir unbekannte Konvention verwendet. Was bedeutet "=*"?

WHERE table1.yr =* table2.yr -1
58
Shawn H

Diese:

WHERE t.column =* s.column

... ist eine alte TSQL-Syntax (vor SQL Server 2005) und ist kein ANSI-JOIN.

Referenz: SQL Server 2005-Outer Join-Gotcha

71
OMG Ponies

Ich glaube, das ist eine alte Syntax, die auf eine äußere Join-Bedingung von Tabelle1 zu Tabelle2 hinweist

Alter Stil:

SELECT * FROM table1, table2
WHERE table1.yr =* table2.yr -1

Neuer Stil (SQL92):

SELECT * FROM table2 
LEFT OUTER JOIN table1 ON table1.yr = table2.yr - 1
25
Eric Petroelje

Dies ist die alte Syntax zum Ausdrücken von Joins

16
mjv

Das bedeutet, dass der Code sofort ersetzt werden muss! Dieser Stil-Join soll ein richtiger Join sein. Leider wird es manchmal als Kreuzverknüpfung interpretiert, sodass die Ergebnisse der Verwendung dieser Verknüpfung möglicherweise nicht korrekt sind. Diese Syntax ist ebenfalls veraltet und kann nicht in der nächsten Version des SQL-Servers verwendet werden. 

11
HLGEM

Dies ist die ANSI SQL 1989-Syntax für RIGHT OUTER JOIN, wobei * = der LEFT OUTER JOIN wäre.

Beachten Sie auch, dass das Einfügen der Join-Syntax in die WHERE-Klausel in SQL 2008 veraltet ist. http://scarydba.wordpress.com/2009/09/15/no-join-predicate/ <== A time Artikel dazu.

7
Bryan S.

Dies ist der alte Stil von Joins, die in ANSI SQL92 nicht mehr unterstützt wurden. Die neue Syntax verwendet INNER und OUTER JOIN, die Tabellen auf der Grundlage von Ausdrücken anstelle von Gleichheit verknüpfen

2
Sailing Judo

EIN ??? Die äußere Verknüpfung wird mit dem Symbol = * anstelle von = in der WHERE-Klausel angegeben.

1
alex
SELECT *
FROM table1, table2
WHERE table1.yr =* table2.yr -1

Bedeutet dasselbe wie dieses:

  SELECT *
  FROM
    table2
    LEFT OUTER JOIN
    table1
    ON table1.yr = (table2.yr - 1)

Die * -Syntax gilt als veraltet und entspricht nicht den ANSI-Standards.

Oracle hat ein ähnliches Konstrukt wie dieses:

  WHERE table1.yr (+)= table2.yr
0
JosephStyons

yeap, es ist eine andere Syntax für einen Left Outer Join

 aus 
 table1 linker äußerer Join table2 auf table1.yr = table2.yr - 1 
0
opensas

Einfach und einfach. Dies ist ein SQL-92-Outer-Join-Operator ( weitere Informationen ).

Verwenden Sie es nicht, es ist eine sehr alte Schule, aber es ähnelt LEFT JOIN und RIGHT JOIN. Sie müssen nur sagen, welche Seite des Joins die "Parent" -Seite ist, also Reihen auf dieser Seite zuerst betrachtet werden.

Wenn Sie versuchen, dies in SQL 2005 auszuführen, wird ein Fehler ausgegeben, der besagt, dass Sie dies im Kompatibilitätsmodus ausführen müssen.

0
Oakcool