27th Nov 2023 9 Leseminuten SQL JOINs erklärt: 5 anschauliche SQL INNER JOIN-Beispiele für Einsteiger Martyna Sławińska JOIN Inhaltsverzeichnis Tabellen zusammenführen: Einführung in die SQL JOIN-Operationen SQL INNER JOIN Beispiele in der Praxis Beispiel 1: Bücher mit Autoren verknüpfen Beispiel 2: Produkte zu Kategorien zuordnen Beispiel 3: Auflisten von Ärzten und Patienten mit gleichem Vornamen Beispiel 4: Zuordnung von Personen zu geeigneten Wohnungen Beispiel 5: Verbinden von Kontinenten, Ländern und Städtetabellen Sie sind dran mit dem Üben von SQL INNER JOIN-Beispielen Suchen Sie nach einer klaren Erklärung von Joins in SQL? Sehen Sie sich diese fünf SQL INNER JOIN-Beispiele an! In SQL kann INNER JOINfür Anfänger ein wenig schwierig zu beherrschen sein. Aber wenn Sie erst einmal mit ihnen arbeiten, werden Sie feststellen, dass sie sehr nützlich sind! Im Folgenden werden wir fünf Beispiele für SQL INNER JOINbesprechen. Doch zunächst ein kurzer Überblick darüber, warum JOINs wichtig sind. In relationalen Datenbanken werden die Daten in Tabellen organisiert und gespeichert. Jede Tabelle repräsentiert eine bestimmte Art von Informationen. Oftmals müssen Sie jedoch Daten aus verschiedenen Tabellen gleichzeitig analysieren. Und genau hier kommen JOINs ins Spiel. Wir ermutigen Sie, das Verbinden von Tabellen in unserem interaktiven SQL-JOINs Kurs folgen. Er umfasst 93 Übungen zu den folgenden Themen: SQL JOIN-Typen. Mehrfache JOINs. Self-Joins, d.h. das Verbinden einer Tabelle mit sich selbst. Nicht-Equi JOINs. Sind Sie also bereit, sich einige Beispiele für INNER JOIN anzusehen? Fangen wir an! Tabellen zusammenführen: Einführung in die SQL JOIN-Operationen SQL-JOINs kombinieren Daten aus zwei oder mehr Tabellen auf der Grundlage übereinstimmender Spaltenwerte. So können Sie beispielsweise Kundeninformationen mit den von ihnen getätigten Bestellungen zusammenführen oder jedes Produkt mit seinen Lieferanten verknüpfen. SQL-JOINs Mit SQL JOIN können Sie Daten aus verschiedenen Tabellen zusammenführen und aussagekräftige Informationen für Ihren speziellen Anwendungsfall extrahieren. In diesem SQL JOIN Cheat Sheet finden Sie einen Überblick über die verschiedenen Arten von JOINs. Ein INNER JOIN in SQL kombiniert Zeilen aus mehreren Tabellen, indem er ihre gemeinsamen Spaltenwerte abgleicht. Wenn Sie eine INNER JOIN anwenden, um Kundendaten mit den entsprechenden Bestellungen zu verknüpfen, erhalten Sie eine Liste der Kunden, die mindestens eine Bestellung aufgegeben haben. Zusätzlich zu INNER JOIN bietet SQL auch andere Arten von Verknüpfungen: LEFT JOIN, RIGHT JOIN, und FULL JOIN. Diese Verknüpfungen werden OUTER JOINgenannt. Im Gegensatz zu INNER JOIN kann eine OUTER JOIN Operation Zeilen aus beiden Tabellen auflisten, auch wenn es keine Übereinstimmung gibt. Schauen wir uns ein Beispiel an, um die Natur von SQL INNER JOINs besser zu verstehen. Hier ist die customers Tabelle, die Kundeninformationen speichert: customer_idfirst_namelast_nameemail 1CoryCastillocc@email.com 2ElliePottsep@email.com 3JackGreerjg@email.com Und hier ist die orders Tabelle, die alle Bestellungen der Kunden speichert: order_idcustomer_idorder_dateorder_amount 2716/6/2023100.00 2827/7/2023150.00 2918/8/202320.00 Die gemeinsame Spalte (in rosa dargestellt), auf der die customers und orders Tabellen verbunden sind, ist die Spalte customer_id. Und hier ist die Abfrage: SELECT c.customer_id, c.email, o.order_date, o.order_amount FROM customers AS c INNER JOIN orders AS o ON c.customer_id = o.customer_id; Diese Abfrage verknüpft die customers Tabelle (alias AS c) und die orders Tabelle (mit dem Alias AS o). Diese Tabellen-Aliase bieten eine eindeutige Möglichkeit, die Datenbank über die Quelltabelle jeder Spalte zu informieren (unter Verwendung der Syntax table_alias.column_name). Diese Aliase werden in der Klausel ON verwendet, um die Spalte für die Verbindung von Tabellen festzulegen. Sie werden auch in der Anweisung SELECT verwendet, in der zwei Spalten aus der Tabelle customers (c.customer_id and c.email) und zwei weitere Spalten aus der Tabelle orders Tabelle (o.order_date and o.order_amount). Hier ist die Ausgabe der Abfrage: customer_idemailorder_dateorder_amount 1cc@email.com6/6/2023100.00 2ep@email.com7/7/2023150.00 1cc@email.com8/8/202320.00 Sie werden feststellen, dass der Kunde mit der ID 3 nicht in der Ergebnistabelle erscheint. Dieser Kunde hat noch keine Bestellungen aufgegeben; daher gibt es keine passenden Datensätze in der orders Tabelle. Das Schlüsselwort INNER JOIN ist austauschbar mit dem Schlüsselwort JOIN. Mit anderen Worten, wenn Sie JOIN verwenden, interpretiert die Datenbank es als Kurzschreibweise für INNER JOIN. Wenn Sie mehr über INNER JOINerfahren möchten, lesen Sie unseren Artikel Was ist ein Inner Join in SQL? SQL INNER JOIN Beispiele in der Praxis Sehen wir uns nun einige SQL INNER JOIN Beispiele an, die für Anfänger geeignet sind. Bevor Sie sich mit den Beispielen befassen, sollten Sie sich diesen Artikel ansehen, in dem beschrieben wird, wie Sie SQL-JOINs üben können. Beispiel 1: Bücher mit Autoren verknüpfen Sie haben zwei Tabellen, in denen Informationen über Bücher und Autoren gespeichert sind. Verknüpfen Sie diese Tabellen, um die Liste der Bücher zusammen mit ihren Autoren anzuzeigen. Hier ist die books Tabelle: book_idtitlepublication_yearauthor_id 1Frankenstein181822 2The Time Machine189523 3The Martian201124 42001: A Space Odyssey196825 5Dune196526 Die Spalte book_id identifiziert jedes Buch auf eindeutige Weise. Und die Spalte author_id ordnet jedem Buch einen Autor zu. Und hier ist die authors Tabelle: author_idauthor_name 22Mary Shelley 23H. G. Wells 24Andy Weir 25Arthur C. Clarke 26Frank Herbert In der Spalte author_id wird jeder Autor eindeutig identifiziert. Und die Spalte author_name speichert die vollständigen Namen der Autoren. Wenn Sie die Buchtitel und die Autorennamen sehen möchten, können Sie diese Tabellen anhand ihrer gemeinsamen Spalte (der Spalte author_id in beiden Tabellen) verbinden. Wählen Sie einfach title aus books und author_name aus authors: SELECT b.title, a.author_name FROM books AS b INNER JOIN authors AS a ON b.author_id = a.author_id; Dies ist die resultierende Tabelle: titleauthor_name FrankensteinMary Shelley The Time MachineH. G. Wells The MartianAndy Weir 2001: A Space OdysseyArthur C. Clarke DuneFrank Herbert Bitte beachten Sie, dass jedem Buch ein Autor und jedem Autor ein Buch zugeordnet ist, da es keine doppelten Werte in der gemeinsamen Spalte author_id gibt. Sehen Sie sich das nächste Beispiel an, um zu sehen, was passiert, wenn die gemeinsame Spalte doppelte Werte enthält. Beispiel 2: Produkte zu Kategorien zuordnen Sie haben zwei Tabellen, die Produkte und Produktkategorien speichern. Verbinden Sie diese Tabellen, um die Liste der Produkte zusammen mit ihren Kategorien zu sehen. Hier ist die products Tabelle: product_idproduct_namecategory_id 1Apple22 2Orange22 3Potato23 4Carrot23 5Chocolate24 Die Spalte product_id identifiziert jedes Produkt eindeutig. Und die Spalte category_id ordnet jedem Produkt eine Kategorie zu. Und hier ist die categories Tabelle: category_idcategory_name 22Fruits 23Vegetables 24Snacks Die Spalte category_id identifiziert jede Kategorie eindeutig. Und die Spalte category_name speichert die vollständigen Kategorienamen. Wenn Sie die Produkte und ihre Kategorien sehen möchten, können Sie diese Tabellen auf der Grundlage ihrer gemeinsamen Spalte, der Spalte category_id, verbinden. Hier ist die Abfrage: SELECT p.product_name, c.category_name FROM products AS p INNER JOIN categories AS c ON p.category_id = c.category_id; Dies ist die resultierende Tabelle: product_namecategory_name AppleFruits OrangeFruits PotatoVegetables CarrotVegetables ChocolateSnacks Die Kategorien mit den IDs 22 und 23 sind jeweils zwei Produkten zugeordnet; ihre Namen erscheinen zweimal in der Ausgabetabelle. Beispiel 3: Auflisten von Ärzten und Patienten mit gleichem Vornamen Sie haben zwei Tabellen, die Informationen über Ärzte und Patienten speichern. Verbinden Sie diese Tabellen, um die Liste der Ärzte und Patienten mit demselben Vornamen anzuzeigen. Hier ist die doctors Tabelle: doctor_idfirst_namelast_name 1SamanthaMonroe 2MelvinFerrell 3AlbieBlake 4RoseBernard 5LouiPeterson Die Spalte doctor_id identifiziert jeden Arzt eindeutig. In den beiden anderen Spalten werden die Vor- und Nachnamen der Ärzte gespeichert. Und hier ist die patients Tabelle: patient_idfirst_namelast_name 23BenWoodward 24SamanthaThomson 25KateDonovan 26AlbieVasquez 27LouiChen In der Spalte patient_id wird jeder Patient eindeutig identifiziert. In den beiden anderen Spalten werden die Vor- und Nachnamen der Patienten gespeichert. Wenn Sie die Liste der Ärzte und Patienten mit demselben Vornamen sehen möchten, können Sie diese Tabellen anhand der Spalte first_name verbinden. SELECT d.*, p.* FROM doctors AS d INNER JOIN patients AS p ON d.first_name = p.first_name; Bitte beachten Sie, dass d.* alle Spalten der Tabelle doctors Tabelle und p.* alle Spalten aus der patients Tabelle definiert. Dies ist die resultierende Tabelle: doctor_idfirst_namelast_namepatient_idfirst_namelast_name 1SamanthaMonroe24SamanthaThomson 3AlbieBlake26AlbieVasquez 5LouiPeterson27LouiChen Dank der Operation INNER JOIN können Sie nur die Arzt- und Patientenpaare auflisten, bei denen die Vornamen übereinstimmen. Beispiel 4: Zuordnung von Personen zu geeigneten Wohnungen Sie haben zwei Tabellen, in denen Informationen über zu vermietende Wohnungen und Personen, die nach Wohnungen in ihrer Preisklasse suchen, gespeichert sind. Verbinden Sie diese Tabellen, um zu sehen, welche Wohnungen von welcher Person gemietet werden können. Hier ist die apartments Tabelle: apartment_idrent 11000 2700 3500 Die Spalte apartment_id identifiziert jede Wohnung eindeutig. Und die Spalte rent speichert den monatlichen Mietbetrag. Und hier ist die persons Tabelle: person_idemailmax_rent 23ab@email.com900 24cd@email.com600 25ef@email.com3000 Die Spalte person_id identifiziert eindeutig jede Person, die eine Wohnung zur Miete sucht. Die Spalte email speichert ihre E-Mails, und die Spalte max_rent speichert den Höchstbetrag der Monatsmiete, den sie für die Wohnung zahlen können. Wenn Sie sehen möchten, welche Wohnungen von welcher Person gemietet werden können, können Sie diese Tabellen anhand der Spalten rent und max_rent verknüpfen: SELECT p.person_id, p.email, a.apartment_id, a.rent AS apartment_rent FROM apartments AS a INNER JOIN persons AS p ON a.rent < p.max_rent; Hier muss die Übereinstimmung zwischen der Spalte Miete der Tabelle apartments Tabelle und der Spalte max_rent der Tabelle persons Tabelle, wobei rent < max_rent. Dies ist die resultierende Tabelle: person_idemailapartment_idapartment_rent 25ef@email.com11000 23ab@email.com2700 25ef@email.com2700 23ab@email.com3500 24cd@email.com3500 25ef@email.com3500 Durch die Verwendung der ON-Klausel mit der Bedingung, die das Zeichen < enthält, wurden mehrere Zeilen aus der Tabelle apartments Tabelle mehreren Zeilen aus der Tabelle persons Tabelle zugeordnet, und umgekehrt. Und Sie können sehen, welche Wohnungen für welche Personen zur Miete geeignet sind. Beispiel 5: Verbinden von Kontinenten, Ländern und Städtetabellen Diesmal haben Sie drei Tabellen, in denen Informationen über Kontinente, Länder und Städte gespeichert sind. Verbinden Sie diese Tabellen, um zu erfahren, welche Stadt zu welchem Land und welches Land zu welchem Kontinent gehört. Hier ist die continents Tabelle, in der alle Kontinente gespeichert sind: continent_idcontinent_name 1Asia 2Africa 3North America 4South America 5Antarctica 6Europe 7Australia Die Spalte continent_id identifiziert jeden Kontinent eindeutig. In der Spalte continent_name ist der vollständige Name des Kontinents gespeichert. Hier ist die countries Tabelle, die ausgewählte Länder speichert: country_idcountry_namecontinent_id 23United States3 24Brazil4 25South Africa2 26Japan1 27Poland6 In der Spalte country_id wird jedes Land eindeutig identifiziert. In der Spalte country_name wird der vollständige Name des Landes gespeichert. Und die Spalte continent_id speichert den Kontinent, auf dem sich das Land befindet. Und hier ist die cities Tabelle, die ausgewählte Städte speichert: city_idcity_namecountry_id 33Rio de Janeiro24 34New York23 35Tokyo26 36Warsaw27 37Cape Town25 In der Spalte city_id wird jede Stadt eindeutig identifiziert. In der Spalte city_name wird der vollständige Name der Stadt gespeichert. Und die Spalte country_id speichert das Land, in dem die Stadt liegt. Wenn Sie sehen möchten, welche Städte, Länder und Kontinente zusammengehören, können Sie diese drei Tabellen anhand ihrer gemeinsamen Spalten verbinden: SELECT cont.continent_name, coun.country_name, ci.city_name FROM continents AS cont INNER JOIN countries AS coun ON cont.continent_id = coun.continent_id INNER JOIN cities AS ci ON coun.country_id = ci.country_id; Die Tabelle continent Tabelle wird mit der countries über ihre gemeinsame Spalte (continent_id) verbunden. Und die countries Tabelle wird mit der cities Tabelle über ihre gemeinsame Spalte verbunden (country_id). Dies ist die resultierende Tabelle: continent_namecountry_namecity_name AsiaJapanTokyo AfricaSouth AfricaCape Town North AmericaUnited StatesNew York South AmericaBrazilRio de Janeiro EuropePolandWarsaw Die drei Tabellen werden über ihre gemeinsamen Spalten verbunden, und die Anweisung SELECT listet die Namen von Kontinenten, Ländern und Städten auf der Grundlage der Verbindung zwischen den ID-Spalten auf. In diesem Artikel über die Verknüpfung von drei oder mehr Tabellen in SQL finden Sie weitere Beispiele für Multi-Table-Joins. Sie sind dran mit dem Üben von SQL INNER JOIN-Beispielen In diesem Artikel haben wir uns mit den Feinheiten von INNER JOIN in SQL befasst, von den grundlegenden Konzepten bis hin zu fortgeschrittenen Szenarien. Wir haben verschiedene JOIN Bedingungen verwendet und sogar drei Tabellen miteinander verbunden. Wie wir gesehen haben, liegt die Stärke von INNER JOIN in seiner Fähigkeit, Datensätze nahtlos zu verbinden, wodurch wir wertvolle Erkenntnisse gewinnen können. Brauchen Sie weitere SQL INNER JOIN Beispiele? Versuchen Sie sich an allen Arten von JOINs, indem Sie unseren bereits erwähnten Kurs auf SQL-JOINs besuchen. Sie erhalten alle praktischen Übungen, die Sie benötigen, um JOINs zu schreiben. Viel Erfolg! Tags: JOIN