1SOL JOINS wird verwendet, um Zeilen aus zwei oder mehr Tabellen zu kombinieren.
2Nehmen wir hier "htp_token" als Tabelle A und "stts" als Tabelle B hier.
1. INNER JOIN
3zur Datensätze aus zwei Tabellen zurückgreifen, die die Verknüpfungsbedingungen erfüllen (A∩B)
SELECT htp_tokens.token, stts.description FROM htp_tokens INNER JOIN stts ON htp_tokens.wortart = stts.pos
2. LEFT JOIN
LEFT JOIN wird verwendet, um Daten aus mehreren Tabellen zu extrahieren.
LEFT JOIN unterscheidet sich von INNER JOIN darin, dass LEFT JOIN alle Datensätze der linken Tabelle (A) zurückgibt, auch wenn in der rechten Tabelle (B) keine übereinstimmenden Datensätze vorhanden sind.
Das Schlüsselwort LEFT JOIN gibt alle Zeilen aus der linken Tabelle (A) zurück, auch wenn in der rechten Tabelle (B) keine Übereinstimmung vorhanden ist. Wenn in der rechten Tabelle keine Übereinstimmung vorhanden ist, ist das Ergebnis NULL.
In mancher Datenbanksystemen wird LEFT JOIN als LEFT OUTER JOIN geschrieben.
SELECT htp_tokens.token, stts.examples FROM htp_tokens LEFT JOIN stts ON htp_tokens.wortart = stts.pos
3. RIGHT JOIN
Ähnlich wie LEFT JOIN, aber mit umgekehrtem Verhalten: RIGHT JOIN gibt alle Datensätze der rechten Tabelle zurück, auch wenn in der linken Tabelle keine übereinstimmenden Datensätze vorhanden sind.
Das Schlüsselwort RIGHT JOIN gibt alle Zeilen aus der rechten Tabelle (table2) zurück, auch wenn in der linken Tabelle (table1) keine Übereinstimmung vorhanden ist. Wenn in der linken Tabelle keine Übereinstimmung vorhanden ist, ist das Ergebnis NULL.
SELECT htp_tokens.token, stts.examples FROM htp_tokens RIGHT JOIN stts ON htp_tokens.wortart = stts.pos
4. FULL JOIN
FUUL JOIN wird verwendet, um alle Datensätze aus zwei Tabellen beizubehalten, auch wenn eine der beiden Tabellen keine Übereinstimmungen aufweist. (A∪B)
Das Ergebnis von FULL JOIN umfasst die Datensätze, die die Bedingungen in beiden Tabellen erfüllen (Schnittmenge), sowie die Datensätze, die die Bedingungen nicht erfüllen (nicht-Schnittmenge). Wenn ein Datensatz in einer Tabelle vorhanden ist, aber in der anderen Tabelle keine Übereinstimmung aufweist, wird die fehlende Spalte mit NULL gefüllt.
Das Schlüsselwort FULL JOIN gibt Zeilen zurück, solange in einer der beiden Tabellen (A oder B) eine Übereinstimmung vorhanden ist.
SELECT htp_tokens.token, htp_tokens.tokennr, stts.description, stts.examples FROM htp_tokens FULL JOIN stts ON htp_tokens.wortart = stts.pos
oder (wenn das DBMS (z.B. MySQL) FULL JOIN nicht unterstützen, kann man UNION verwenden, um LEFT JOIN und RIGHT JOIN zu kombinieren und einen ähnlichen Effekt zu erzielen)
SELECT htp_tokens.token, htp_tokens.tokennr, stts.description, stts.examples FROM htp_tokens LEFT JOIN stts ON htp_tokens.wortart = stts.pos UNION SELECT htp_tokens.token, htp_tokens.tokennr, stts.description, stts.examples FROM htp_tokens RIGHT JOIN stts ON htp_tokens.wortart = stts.pos
5. UNION
UNION wird verwendet, um die Ergebnismengen von zwei oder mehr SELECT-Anweisungen zu kombinieren. Er kann Daten aus mehreren Tabellen auswählen und die Ergebnismengen zu einer Ergebnismenge zusammenführen. Bei der Verwendung von UNION muss jede SELECT-Anweisung die gleiche Anzahl von Spalten haben, und die entsprechenden Spalten müssen ähnliche Datentypen aufweisen.
SELECT column1, column2, ... FROM table1 UNION SELECT column1, column2, ... FROM table2
UNION entfernt standardmäßig doppelte Datensätze. Wenn alle doppelten Datensätze beibehalten werden sollen, kann UNION ALL verwendet werden.
SELECT column1, column2, ... FROM table1 UNION ALL SELECT column1, column2, ... FROM table2
6. CROSS JOIN
CROSS JOIN (auch als kartesisches Produkt bekannt) wird verwendet, um alle möglichen Kombinationen aus zwei Tabellen zurückzugeben. Es kombiniert jede Zeile der linken Tabelle mit jeder Zeile der rechten Tabelle und erzeugt eine Ergebnismenge, die alle Kombinationen enthält.
SELECT htp_tokens.token, htp_tokens.tokennr, stts.description, stts.kategorie FROM htp_tokens CROSS JOIN stts
7. SELF JOIN
SELF JOIN ist eine Verknüpfung, bei der eine Tabelle mit sich selbst verbunden wird. Es wird häufig verwendet, um Zeilen innerhalb der Tabelle zu vergleichen oder um verwandte Daten in derselben Tabelle zu finden. z. B. möchte ich in Tabelle "htp_tokens" nach token suchen, deren Wortart NN ist:
SELECT a.token, a.tokennr, a.wortart FROM htp_tokens a JOIN htp_tokens b ON a.tokennr = b.tokennr WHERE a.wortart = 'NN'