Das Wort JOIN ist jedem geläufig, der schon einmal mit Datenbanken zu tun hatte. Viele Leute kennen verschiedene JOINs, aber viele haben kein umfassendes Verständnis davon. TABELLE_A | TABELLE_B PK-Wert | PK-Wert ---- ---------- | ---- ---------- 1 FUCHS | 1 TRAB 2 Polizisten | 2 Autos 3 TAXI | 3 CAB 6 WASHINGTON | 6 DENKMAL 7 DELL | 7 PC 5 ARIZONA | 8 MICROSOFT 4 LINCOLN | 9 APFEL 10 LUCENT | 11 SCOTCH Join-Syntax:Tabelle verbinden: table_reference JOIN table_factor [join_condition] //Innerer Join | table_reference {LEFT|RIGHT|FULL} [OUTER] JOIN table_reference join_condition //Äußerer Join | table_reference LEFT SEMI JOIN table_reference join_condition //Linker Semi-Join | table_reference CROSS JOIN table_reference [join_condition] (Stand Hive 0.10) Tabellenreferenz: table_factor //Tabelle | join_table //Join-Anweisung table_factor: tbl_name [Alias] //Tabellenname [Alias] | table_subquery alias //Unterabfrage [Alias] | (table_references) // table_reference mit Leerzeichen Beitrittsbedingung: ON-Ausdruck //bedingte Anweisung, die mit on beginnt 1. Innerer JOIN: (Innerer Join)Dies ist die einfachste und am leichtesten verständliche und auch die am häufigsten vorkommende Verbindung. Diese Abfrage gibt alle Datensätze in der linken Tabelle (Tabelle A) zurück, die einen entsprechenden Datensatz in der rechten Tabelle (Tabelle B) haben. Dieser Zusammenhang wird wie folgt geschrieben: SELECT <Auswahlliste> VON Tabelle_A A INNER JOIN Tabelle_B B EIN A.Taste = B.Taste -- Innerer JOIN WÄHLEN SIE A.PK ALS A_PK, A.Wert ALS A_Wert, B.Wert als B_Wert, B.PK als B_PK VON Tabelle_A A INNER JOIN Tabelle_B B EIN A.PK = B.PK A_PK A_Wert B_Wert B_PK ---- ---------- ---------- ---- 1 FOXTROTT 1 2 Polizistenwagen 2 3 TAXI 3 6 WASHINGTON DENKMAL 6 7 Dell-PC 7 (5 Zeile(n) betroffen) 2. Linker JOIN: (Linker Join)Diese Abfrage gibt alle Datensätze aus der linken Tabelle (Tabelle A) zurück, unabhängig davon, ob sie mit Datensätzen in der rechten Tabelle (Tabelle B) übereinstimmen. Außerdem werden alle übereinstimmenden Datensätze aus der richtigen Tabelle zurückgegeben. Dieser Zusammenhang wird wie folgt geschrieben: SELECT <Auswahlliste> VON Tabelle_A A LEFT JOIN Tabelle_B B EIN A.Taste = B.Taste -- Linker JOIN WÄHLEN SIE A.PK ALS A_PK, A.Wert ALS A_Wert, B.Wert als B_Wert, B.PK als B_PK VON Tabelle_A A LEFT JOIN Tabelle_B B EIN A.PK = B.PK A_PK A_Wert B_Wert B_PK ---- ---------- ---------- ---- 1 FOXTROTT 1 2 Polizistenwagen 2 3 TAXI 3 4 LINCOLN NULL NULL 5 ARIZONA NULL NULL 6 WASHINGTON DENKMAL 6 7 Dell-PC 7 10 LICHT NULL NULL (8 Zeile(n) betroffen) 3. Left Excluding JOIN: (Linker Join schließt innere Join-Ergebnisse aus) Diese Abfrage gibt alle Datensätze aus der linken Tabelle (Tabelle A) zurück, die mit keinem Datensatz in der rechten Tabelle (Tabelle B) übereinstimmen. Dieser Zusammenhang wird wie folgt geschrieben: SELECT <Auswahlliste> VON Tabelle_A A LEFT JOIN Tabelle_B B EIN A.Taste = B.Taste Wobei B.Key NULL ist -- Links ohne JOIN WÄHLEN SIE A.PK ALS A_PK, A.Wert ALS A_Wert, B.Wert als B_Wert, B.PK als B_PK VON Tabelle_A A LEFT JOIN Tabelle_B B EIN A.PK = B.PK Wobei B.PK NULL ist A_PK A_Wert B_Wert B_PK ---- ---------- ---------- ---- 4 LINCOLN NULL NULL 5 ARIZONA NULL NULL 10 LICHT NULL NULL (3 Zeile(n) betroffen) 4. Right JOIN: (Rechtsverbindung)Diese Abfrage gibt alle Datensätze aus der rechten Tabelle (Tabelle B) zurück, unabhängig davon, ob diese Datensätze mit Datensätzen in der linken Tabelle (Tabelle A) übereinstimmen. Es werden auch alle übereinstimmenden Datensätze aus der linken Tabelle zurückgegeben. Dieser Zusammenhang wird wie folgt geschrieben: SELECT <Auswahlliste> VON Tabelle_A A RIGHT JOIN Tabelle_B B EIN A.Taste = B.Taste --Rechts JOIN WÄHLEN SIE A.PK ALS A_PK, A.Wert ALS A_Wert, B.Wert als B_Wert, B.PK als B_PK VON Tabelle_A A RIGHT JOIN Tabelle_B B EIN A.PK = B.PK A_PK A_Wert B_Wert B_PK ---- ---------- ---------- ---- 1 FOXTROTT 1 2 Polizistenwagen 2 3 TAXI 3 6 WASHINGTON DENKMAL 6 7 Dell-PC 7 NULL NULL MICROSOFT 8 NULL NULL APPLE 9 NULL NULL SCOTCH 11 (8 Zeile(n) betroffen) 5. Right Excluding JOIN: (Rechter Join schließt innere Join-Ergebnisse aus)Diese Abfrage gibt alle Datensätze aus der rechten Tabelle (Tabelle B) zurück, die mit keinem Datensatz in der linken Tabelle (Tabelle A) übereinstimmen. Dieser Zusammenhang wird wie folgt geschrieben: SELECT <Auswahlliste> VON Tabelle_A A RIGHT JOIN Tabelle_B B EIN A.Taste = B.Taste Wobei A.Key NULL ist -- Rechts ausschließend JOIN WÄHLEN SIE A.PK ALS A_PK, A.Wert ALS A_Wert, B.Wert als B_Wert, B.PK als B_PK VON Tabelle_A A RIGHT JOIN Tabelle_B B EIN A.PK = B.PK Wobei A.PK NULL ist A_PK A_Wert B_Wert B_PK ---- ---------- ---------- ---- NULL NULL MICROSOFT 8 NULL NULL APPLE 9 NULL NULL SCOTCH 11 (3 Zeile(n) betroffen) 6. Äußerer JOIN: (Äußerer Join)Dieser Join kann auch als vollständiger äußerer Join oder vollständiger Join bezeichnet werden. Diese Abfrage gibt alle Datensätze aus beiden Tabellen zurück und verbindet die Datensätze in der linken Tabelle (Tabelle A), die mit den Datensätzen in der rechten Tabelle (Tabelle B) übereinstimmen. Dieser Zusammenhang wird wie folgt geschrieben: SELECT <Auswahlliste> VON Tabelle_A A VOLLSTÄNDIGER OUTER JOIN Tabelle_B B EIN A.Taste = B.Taste -- Äußerer JOIN WÄHLEN SIE A.PK ALS A_PK, A.Wert ALS A_Wert, B.Wert als B_Wert, B.PK als B_PK VON Tabelle_A A VOLLSTÄNDIGER OUTER JOIN Tabelle_B B EIN A.PK = B.PK A_PK A_Wert B_Wert B_PK ---- ---------- ---------- ---- 1 FOXTROTT 1 2 Polizistenwagen 2 3 TAXI 3 6 WASHINGTON DENKMAL 6 7 Dell-PC 7 NULL NULL MICROSOFT 8 NULL NULL APPLE 9 NULL NULL SCOTCH 11 5 ARIZONA NULL NULL 4 LINCOLN NULL NULL 10 LICHT NULL NULL (11 Zeile(n) betroffen) 7. Outer Excluding JOIN: (Äußerer Join schließt innere Join-Ergebnisse aus)Diese Abfrage gibt alle Datensätze aus der linken Tabelle (Tabelle A) und alle Datensätze aus der rechten Tabelle (Tabelle B) zurück, die keine Übereinstimmung aufweisen. Diesen Verknüpfungstyp musste ich bisher noch nicht verwenden, alle anderen Verknüpfungstypen verwende ich jedoch ziemlich häufig. Dieser Zusammenhang wird wie folgt geschrieben: SELECT <Auswahlliste> VON Tabelle_A A VOLLSTÄNDIGER OUTER JOIN Tabelle_B B EIN A.Taste = B.Taste Wobei A.Key NULL oder B.Key NULL ist - Äußerer Ausschluss-JOIN WÄHLEN SIE A.PK ALS A_PK, A.Wert ALS A_Wert, B.Wert als B_Wert, B.PK als B_PK VON Tabelle_A A VOLLSTÄNDIGER OUTER JOIN Tabelle_B B EIN A.PK = B.PK Wobei A.PK NULL ist ODER B.PK IST NULL A_PK A_Wert B_Wert B_PK ---- ---------- ---------- ---- NULL NULL MICROSOFT 8 NULL NULL APPLE 9 NULL NULL SCOTCH 11 5 ARIZONA NULL NULL 4 LINCOLN NULL NULL 10 LICHT NULL NULL (6 Zeile(n) betroffen) Beachten Sie, dass bei einem äußeren Join zuerst die inneren Join-Datensätze zurückgegeben werden, gefolgt von den rechten Join-Datensätzen und schließlich den linken Join-Datensätzen (zumindest macht das mein Microsoft SQL Server so; natürlich ist hierfür die Verwendung von ORDER BY-Anweisungen nicht erforderlich). Für weitere Informationen können Sie den Wikipedia-Artikel besuchen (der Eintrag ist jedoch nicht grafisch). Ich habe auch einen Spickzettel erstellt, den Sie bei Bedarf ausdrucken können. Wenn Sie mit der rechten Maustaste auf das Bild unten klicken und „Ziel speichern unter ...“ auswählen, wird das Bild in voller Größe heruntergeladen. Dies ist das Ende dieses Artikels über die spezifische Verwendung von MySQL-Joins. Weitere relevante Verwendungen von MySQL-Joins finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Vier Möglichkeiten, CSS und HTML zu kombinieren
>>: So bedienen Sie Docker und Images
HTML-Bild erzeugt nach dem Hinzufügen eines Hyper...
Ein deutlicher Bedeutung: distinct wird verwendet...
<br />Original: http://uicom.net/blog/?p=762...
Sag es im Voraus Aus einer Laune heraus möchte ic...
Dieses Tutorial beschreibt die Installation der M...
Vorwort Wenn Sie MySQL installieren, erstellen Si...
1. Installationsanweisungen Im Vergleich zur loka...
1. Melden Sie sich bei der MySQL-Datenbank an mys...
1. Die ENV-Anweisung im Dockerfile wird verwendet...
Vorwort Im vorherigen Artikel „Detaillierte Erklä...
1. Regulärer Ausdruck für den Standort Schauen wi...
Zuvor haben wir Docker verwendet, um das SpringBo...
Überblick Ich habe vor Kurzem begonnen, mir Wisse...
Normalerweise gibt es bei der Entwicklung von Lin...
1. Rufen Sie die offizielle Docker-Website auf Ge...