WikiDer > Beitreten (SQL)

Join (SQL)

EIN BEITRETEN-Klausel ist Teil von a SQLabfragen, verursachen Aufzeichnungen von zwei oder mehr Tischen von einem Datenbank kombiniert werden können.

Es gibt zwei Arten von Joins in SQL gemäß der ANSIA-default, ein Inner Join und ein Outer Join. Ein Outer Join kann wiederum links, rechts oder vollständig sein.

Ein Left Outer Join fragt eine Tabelle ab und sucht dann für jeden Ergebnisdatensatz nach zusätzlichen Feldern aus der zweiten Tabelle. Das Syntax ist wie folgt:

WÄHLEN*VONTabelle 1LINKSÄUSSEREBEITRETENTabelle 2AUFTabelle 1.Feld=Tabelle 2.Feld

Ein Left Outer Join garantiert somit das Vorhandensein aller Zeilen der linken Tabelle (hier Tabelle1). Ein Inner-Join tut dies nicht, da Zeilen von table1, für die table2 keine Zeilen findet, für die table1.field = table2.field ist, nicht angezeigt.

Dies kann ergänzt werden durch die WOKlausel und die anderen Klauseln. In dem AUF-clause gibt an, welche Felder der beiden Tabellen übereinstimmen müssen. Dies wird verwendet, um die richtigen Datensätze der zweiten Tabelle in der Nähe der ersten zu finden. Wenn in table2 kein Datensatz gefunden wird, gibt es immer noch einen Ergebnissatz, wenn auch mit leeren Feldern (NULLs) in dem Teil, der aus table2 stammt. Die Keyword-Kombination RECHTER ÄUSSERER JOIN kann auch benutzt werden. Tauschen Sie in diesem Fall table1 und table2 in der obigen Erklärung aus. EIN FULL OUTER JOIN garantiert schließlich das Vorhandensein aller Zeilen von table1 und table2 : das Ergebnis ist also das UNION des LINKE ÄUSSERE VERBINDUNG und der RECHTER ÄUSSERER JOIN.

Tabelle "T1"Tabelle "T2"AbfrageErgebnis
C1C2
1ein
1b
2b
C1C2
1X
1ja
3ja
WÄHLEN*VONT1INNEREBEITRETENT2AUFT1.C1=T2.C1;
T1.C1T1.C2T2.C1T2.C2
1ein1X
1ein1ja
1b1X
1b1ja
WÄHLENT1.C2,T2.C2VONT1LINKSÄUSSEREBEITRETENT2AUFT1.C1=T2.C1;
T1.C2T2.C2
einX
einja
bX
bja
bNULL
WÄHLENT1.C2,T2.C2VONT1RECHTÄUSSEREBEITRETENT2AUFT1.C1=T2.C1;
T1.C2T2.C2
einX
einja
bX
bja
NULLja
WÄHLENT1.C2,T2.C2VONT1VOLLÄUSSEREBEITRETENT2AUFT1.C1=T2.C1;
T1.C2T2.C2
einX
einja
bX
bja
bNULL
NULLja

Ein Inner-Join ist zunächst gleich dem, was man im Mengenlehre und in der relationale Algebra es kartesisches Produkt Anrufe. Das Ergebnis enthält also alle Kombinationen von Datensätzen aus der ersten Tabelle mit allen Datensätzen aus der zweiten Tabelle AUF-keyword — Diese Datensätze werden so gefiltert, dass nur die Zeilen übrig bleiben, deren Felder in der ON-Klausel übereinstimmen. Die Syntax lautet wie folgt:

WÄHLEN*VONTabelle 1INNEREBEITRETENTabelle 2AUFTabelle 1.Feld=Tabelle 2.Feld

Die Anzahl der Ergebnissätze eines Inner-Joins kann maximal die Anzahl der Sätze im kartesischen Produkt erreichen. Datensätze aus Tabelle1, für die keine übereinstimmenden Datensätze in Tabelle2 gefunden wurden, werden nicht angezeigt; dafür das bereits erwähnte ÄUSSERER JOIN. Andererseits werden auch Datensätze aus Tabelle1, für die mehrere übereinstimmende Datensätze aus Tabelle2 gefunden wurden, genauso oft angezeigt.

Bisher wurde der Inner-Join anders formuliert, nämlich ohne den AUF-Klausel; die Beitrittsinformationen waren gerade in der WO-Klausel. Dann wurde schnell ein Fehler gemacht. Ein Beispiel für die alte Schreibweise:

WÄHLEN*VONTabelle 1,Tabelle 2WOTabelle 1.Feld=Tabelle 2.Feld

Diese Notation ist immer noch syntaktisch korrekt und logisch äquivalent zum Inner-Join.

Siehe auch