Frage

Ich verwalte Code, der in einer Abfrage an eine Sybase-Datenbank einen *=-Operator verwendet, und kann keine Dokumentation dazu finden.Weiß jemand, was *= macht?Ich gehe davon aus, dass es sich um eine Art Join handelt.

select * from a, b where a.id *= b.id

Ich kann nicht herausfinden, wie sich das von Folgendem unterscheidet:

select * from a, b where a.id = b.id
War es hilfreich?

Lösung

Aus http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.dc34982_1500/html/mig_gde/mig_gde160.htm:

Innen- und Außentische

Die Begriffe äußere Tabelle und innere Tabelle beschreiben die Platzierung der Tabellen in einem äußeren Join:

  • Bei einem Left-Join sind die äußere Tabelle und die innere Tabelle die linke bzw. rechte Tabelle.Die äußere Tabelle und die innere Tabelle werden auch als zeilenerhaltende bzw. nullliefernde Tabellen bezeichnet.

  • Bei einem rechten Join sind die äußere Tabelle und die innere Tabelle die rechte bzw. linke Tabelle.

In den folgenden Abfragen ist T1 beispielsweise die äußere Tabelle und T2 die innere Tabelle:

  • T1 links und T2 verbinden
  • T2 rechts auf T1 treffen

Oder mit der Transact-SQL-Syntax:

  • T1 *= T2
  • T2 =* T1

Andere Tipps

Es bedeutet äußere Verknüpfung, ein einfaches = bedeutet innere Verknüpfung.

*= is LEFT JOIN and =* is RIGHT JOIN.

(oder umgekehrt, ich vergesse es ständig, da ich es nicht mehr verwende und Google bei der Suche nach *= nicht hilfreich ist)

Natürlich Du sollen schreibe es so:

SELECT *
FROM a
LEFT JOIN b ON b.id=a.id

Die a,b-Syntax ist böse.

ANSI-82-Syntax

select 
    * 
from 
    a
  , b 

where 
     a.id *= b.id

ANSI-92

select 
    * 
from 
   a
  left outer join b 
      on a.id = b.id
select * from a, b where a.id = b.id

Erfordert, dass eine Zeile vorhanden ist, in der b.id = a.id ist, um eine Antwort zurückzugeben

select * from a, b where a.id *= b.id

Füllt die Spalten von b mit Nullen, wenn es in b keine Zeile gab, in der b.id = a.id.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top