23rd Jun 2022 5 Leseminuten Wie man zwei Tabellen über mehrere Spalten in SQL verbindet Kateryna Koidan JOIN Inhaltsverzeichnis Verbinden zweier Tabellen über mehrere Spalten Beispiel 1: SQL JOIN nach zwei Spalten Beispiel 2: SQL JOIN nach drei Spalten Üben wir SQL-JOINs nach mehreren Spalten! Der SQL JOIN ist ein wichtiges Werkzeug, um Informationen aus mehreren Tabellen zu kombinieren. Meistens werden Sie Tabellen auf der Grundlage eines Primärschlüssels aus einer Tabelle und eines Fremdschlüssels aus einer anderen Tabelle verknüpfen. Es kommt jedoch auch häufig vor, dass Sie Tabellen anhand von zwei oder mehr Spalten verknüpfen müssen. In diesem Artikel gehe ich darauf ein, warum Sie Tabellen nach mehreren Spalten verknüpfen sollten und wie Sie dies in SQL tun können. Das Verknüpfen von Tabellen über nur eine Spalte funktioniert in einigen Fällen nicht. Zum Beispiel kann es vorkommen, dass es keine Spalte in der Tabelle gibt, die die Zeilen eindeutig identifiziert. Oder die Tabellen, die Sie verknüpfen wollen, haben nicht nur eine gemeinsame Spalte, die für die Verknüpfung verwendet werden kann. In solchen Situationen müssen Sie möglicherweise mehrere Spalten verwenden, um Tabellen zu verknüpfen - z. B. den Vor- und den Nachnamen oder die Bestellnummer und das Jahr, wenn die Bestellnummerierung jedes Jahr neu beginnt. Sehen wir uns einige Beispiele an, um zu verstehen, wie dies in der Praxis funktioniert. Verbinden zweier Tabellen über mehrere Spalten Stellen wir uns vor, wir betreiben ein Netzwerk von Kindergärten. In unserer Datenbank haben wir die folgenden Tabellen: studentsHier finden Sie Informationen über jeden Schüler, wie z. B. den Namen, den Kindergarten, den er oder sie besucht hat, die Klasse, das Abschlussjahr und den Lehrer. teachers, wo wir den Namen und das Ausbildungsniveau jedes Lehrers haben. classesHier finden Sie Informationen über jede Klasse, wie den Namen des Kindergartens, die Klasse, das Abschlussjahr und den Namen des Klassenzimmers. students idfirst_namelast_namekindergartengraduation_yearclassteacher_first_nameteacher_last_name 1MaryJonesSunshine2021AIsabellaLopez 2JohnSmithLove & Learn2020BMiaGonzalez 3MarkAndersonButterfly2020BSophiaStevenson 4StevenMooreButterfly2021CMariaStuart 5DianaMillerButterfly2021CMariaStuart 6AnnaDavisSunshine2021AEmmaGrey 7HellenBrownSunshine2020BOliviaTaylor 8GracyLeeLove & Learn2020ACharlotteJohnson 9SaraGarciaLove & Learn2021BJasmineHarris 10KateWilsonSunshine2019BOliviaTaylor teachers idfirst_namelast_nameeducation 101IsabellaLopezUndergraduate 102MariaStuartUndergraduate 103EmmaGreyGraduate 104OliviaTaylorGraduate 105CharlotteJohnsonGraduate 106MiaGonzalezUndergraduate 107SophiaStevensonUndergraduate 108JasmineHarrisUndergraduate classes idkindergartengraduation_yearclassclassroom 201Sunshine2019BIronman 202Butterfly2020BSun 203Love & Learn2020ALove 204Love & Learn2020BHappiness 205Sunshine2020AHulk 206Sunshine2020BSuperman 207Butterfly2021AGarden 208Butterfly2021BIsland 209Butterfly2021CSea 210Love & Learn2021ADream 211Love & Learn2021BLaugh 212Sunshine2021AIronman Sie werden feststellen, dass unsere Datenbank nicht perfekt organisiert ist. Normalerweise würde die students Tabelle Fremdschlüssel wie die ID des Lehrers und die ID der Klasse enthalten, anstatt detaillierte Informationen über die entsprechenden Lehrer und Klassen. Aber selbst wenn die Daten so gespeichert sind, können wir die Tabellen verbinden, solange jede Tabelle eine Reihe von Spalten hat, die jeden Datensatz eindeutig identifizieren. Es ist Zeit für ein paar SQL-Abfragen! Beispiel 1: SQL JOIN nach zwei Spalten In unserem ersten Beispiel möchten wir das Bildungsniveau des Lehrers für jeden Schüler erfahren. Hierfür müssen wir die Informationen aus den Tabellen students und teachers. Leider haben wir die Spalte Lehrer-ID nicht in der Tabelle students Tabelle. Wir haben jedoch die Vor- und Nachnamen der Lehrer in beiden Tabellen. Solange wir keine Lehrer mit identischen vollständigen Namen haben, können wir diese Tabellen sicher über diese beiden Spalten verknüpfen. Hier ist die Abfrage: SELECT s.first_name, s.last_name, s.teacher_first_name, s.teacher_last_name, t.education AS teacher_education FROM students s JOIN teachers t ON s.teacher_first_name = t.first_name AND s.teacher_last_name = t.last_name; Wenn Sie eine Auffrischung der SQL JOIN -Syntax benötigen, sehen Sie sich dieses großartige SQL JOIN Cheat Sheet an. Beachten Sie die beiden Bedingungen in der ON-Klausel, da wir die Bedingung stellen, dass (1) der Vorname aus der Lehrertabelle mit dem Vornamen des Lehrers in der Schülertabelle übereinstimmen muss und (2) der Nachname aus der Lehrertabelle mit dem Nachnamen des Lehrers in der Schülertabelle übereinstimmen muss. Wie Sie sehen, können wir zwei Bedingungen angeben, indem wir beide in die ON-Klausel einfügen und das Schlüsselwort AND dazwischen setzen. Hier ist das Ergebnis: first_namelast_nameteacher_first_nameteacher_last_nameteacher_education MaryJonesIsabellaLopezUndergraduate StevenMooreMariaStuartUndergraduate DianaMillerMariaStuartUndergraduate AnnaDavisEmmaGreyGraduate HellenBrownOliviaTaylorGraduate KateWilsonOliviaTaylorGraduate JohnSmithMiaGonzalezUndergraduate MarkAndersonSophiaStevensonUndergraduate GracyLeeCharlotteJohnsonGraduate SaraGarciaJasmineHarrisUndergraduate Sieht gut aus! Wir sehen jetzt für jeden Schüler die entsprechende Ausbildungsstufe des Lehrers. Um mehr Übung mit der Verknüpfung von Tabellen in SQL zu bekommen, schauen Sie sich diesen interaktiven SQL-JOINs Kurs. Beispiel 2: SQL JOIN nach drei Spalten Im vorherigen Beispiel haben wir gesehen, wie man zwei Tabellen anhand von zwei Bedingungen verknüpft. Bei Bedarf können wir auch mehr Bedingungen verwenden. Sehen wir uns nun an, wie man Tabellen in SQL mit drei Bedingungen verknüpft. Wir möchten nun den Namen des Klassenzimmers herausfinden, in dem jeder Schüler gespielt und gelernt hat. Die Informationen über die Klassenzimmer sind in der Tabelle classes Tabelle. Wir haben die Klassen-ID nicht in der students Tabelle. Wir haben dort jedoch drei Spalten, die in Kombination eine Klasse eindeutig identifizieren: Kindergarten, graduation_year, class. Die gleichen Spalten sind auch in der classes Tabelle. Wir werden also kombinieren students und classes drei Spalten verwenden: SELECT s.first_name, s.last_name, c.kindergarten, c.graduation_year, c.class, c.classroom FROM students s JOIN classes c ON s.kindergarten = c.kindergarten AND s.graduation_year = c.graduation_year AND s.class = c.class; Wie Sie sehen, verbinden wir die Tabellen mit den drei Bedingungen in der ON Klausel mit den AND Schlüsselwörtern dazwischen. Hier ist die Ausgabe: first_namelast_namekindergartengraduation_yearclassclassroom MarkAndersonButterfly2020BSun JohnSmithLove & Learn2020BHappiness StevenMooreButterfly2021CSea MaryJonesSunshine2021AIronman GracyLeeLove & Learn2020ALove HellenBrownSunshine2020BSuperman DianaMillerButterfly2021CSea AnnaDavisSunshine2021AIronman SaraGarciaLove & Learn2021BIronman KateWilsonSunshine2019BLaugh Die JOIN hat wie vorgesehen funktioniert! Wir haben jetzt das entsprechende Klassenzimmer für jeden Schüler. Wenn Sie weitere Beispiele sehen möchten, lesen Sie dieses Kochbuch über die Verknüpfung von Tabellen über mehrere Spalten. Üben wir SQL-JOINs nach mehreren Spalten! SQL JOIN ist eines der grundlegenden Werkzeuge für Datenanalysten, die mit SQL arbeiten. Relationale Datenbanken sind so aufgebaut, dass analytische Berichte in der Regel die Kombination von Informationen aus mehreren Tabellen erfordern. Sie werden Tabellen verbinden, manchmal über eine Spalte und manchmal über zwei oder mehr Spalten. Wie Sie gesehen haben, ist die Verknüpfung von Tabellen über mehrere Spalten in SQL recht einfach. Wenn Sie jedoch sicher im Umgang mit SQL JOINs werden wollen, ist das Üben mit realen Datensätzen ein wichtiger Erfolgsfaktor. Ich empfehle, mit diesem interaktiven Kurs SQL-JOINs zu beginnen, der 93 Programmieraufgaben enthält. Er deckt die gängigsten Arten von Joins wie JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN und Self-Joins sowie Non-Equi-Joins ab. Um noch mehr Übung mit SQL JOINs und anderen grundlegenden SQL-Tools zu bekommen, sollten Sie den SQL von A bis Z Kurs. Er umfasst 7 interaktive Kurse, die Standard-SQL-Funktionen, grundlegende SQL-Berichte, Fensterfunktionen, allgemeine Tabellenausdrücke, rekursive Abfragen und vieles mehr behandeln. Danke fürs Lesen und viel Spaß beim Lernen! Tags: JOIN