Zurück zur Artikelliste Artikel
12 Leseminuten

RIGHT JOIN in SQL: Ein Tutorial für Einsteiger

Lernen Sie RIGHT JOIN, ein wichtiger Befehl für jeden SQL-Spezialisten. Unser Artikel erläutert diese wichtige Technik und hilft Anfängern, sich mühelos zurechtzufinden und RIGHT JOIN in ihren Datenbankabfragen anzuwenden.

In SQL ist RIGHT JOIN (auch bekannt als RIGHT OUTER JOIN) von entscheidender Bedeutung für die effektive Verarbeitung von Daten. Dieser Artikel ist ein anfängerfreundlicher Leitfaden für SQL RIGHT JOIN, eine wichtige Technik zum Zusammenführen verschiedener Datentabellen. Wir führen Sie durch die Besonderheiten von RIGHT JOIN und erläutern, wie sie sich von anderen Join-Typen bei der Datenverwaltung unterscheidet. Entdecken Sie mit uns, wie der RIGHT JOIN in SQL Ihre Datenverwaltungsfähigkeiten verbessern kann.

Um Ihr Verständnis von Joins, einschließlich RIGHT JOIN, zu festigen, ist der KursSQL-JOINs unter LearnSQL.de sehr zu empfehlen. Dieser interaktive Kurs vermittelt Anfängern grundlegende SQL-Kenntnisse, um sicherzustellen, dass sie reale Datenbankszenarien effektiv handhaben können.

Verstehen von JOINS in SQL

In SQL ist ein Join eine grundlegende Funktion, die Daten aus zwei Tabellen auf der Grundlage einer übereinstimmenden Spalte kombiniert. Sie ist wichtig für Aufgaben, bei denen Informationen in verschiedenen Tabellen gespeichert sind und zusammen angezeigt werden müssen. Wenn Sie zum Beispiel eine Tabelle mit Mitarbeiterdaten und eine andere mit Abteilungsdaten haben, können Sie mit Hilfe eines Joins feststellen, welcher Mitarbeiter zu welcher Abteilung gehört.

Unter den verschiedenen Arten von Verknüpfungen ist RIGHT JOIN eine Schlüsseltechnik. Sie wird vielleicht nicht so häufig verwendet wie INNER JOIN, ist aber für ein umfassendes Verständnis von SQL unerlässlich.

Einführung in unsere Beispieldaten

Die Tabelle Restaurants

RestaurantIDNameOpeningYear
1Galactic Diner2018
2The Enchanted Fork2020
3Cove Café2019
4The Mystic Pizzeria2024

In dieser Tabelle sind verschiedene Restaurants zusammen mit dem Jahr ihrer Eröffnung aufgeführt. Das Restaurant "The Mystic Pizzeria" ist ein neu eröffnetes Restaurant, für das noch keine Bewertungen vorliegen.

Die Bewertungstabelle

RatingIDRestaurantIDRatingReviewer
114.8Alice
224.3Bob
314.9Charlie
434.0Dana
524.2Erin
615.0Frank
714.7Georgia

Diese Tabelle zeigt die von Kunden abgegebenen Bewertungen. Die Bewertungen sind mit den Restaurants über die Restaurant-ID verknüpft.

INNER JOIN vs. RIGHT JOIN in SQL

In diesem Abschnitt werden wir die Hauptunterschiede zwischen RIGHT JOIN und INNER JOIN, zwei wichtigen Arten von Verknüpfungen in SQL, untersuchen.

INNER JOIN

INNER JOIN ist die häufigste Art der Verknüpfung. Er wird verwendet, um Zeilen aus zwei Tabellen zu kombinieren. Es werden nur die Zeilen zurückgegeben, für die es in beiden Tabellen einen passenden Wert gibt. Wenn eine Zeile in einer Tabelle keine Entsprechung in der anderen Tabelle hat, wird sie nicht in der Ergebnismenge angezeigt.

Wenden wir eine INNER JOIN auf unseren Beispieldatensatz an. Wir möchten herausfinden, welche Bewertungen jedes Restaurant erhalten hat.

SELECT 
  Restaurants.Name, 
  Restaurants.OpeningYear, 
  Ratings.Rating, 
  Ratings.Reviewer
FROM Restaurants
INNER JOIN Ratings 
ON Restaurants.RestaurantID = Ratings.RestaurantID;

Diese Abfrage verknüpft die Restaurants Tabelle mit der Ratings basierend auf ihrer gemeinsamen Spalte RestaurantID. In der FROM -Klausel führen wir die erste Tabelle auf. Dann verwenden wir das Schlüsselwort INNER JOIN, gefolgt von der Klausel ON und der Verknüpfungsbedingung. Die Verknüpfungsbedingung legt fest, wie die Informationen aus den beiden Tabellen kombiniert werden: In diesem Fall müssen die Zeilen die gleiche Restaurant-ID haben.

Hier ist das Ergebnis der Abfrage:

RatingIDRestaurantIDRatingReviewer
114.8Alice
224.3Bob
314.9Charlie
434.0Dana
524.2Erin
615.0Frank
714.7Georgia

In diesem Ergebnis wird jeder Eintrag aus der Tabelle Restaurants Tabelle, der eine entsprechende Bewertung in der Ratings Tabelle hat, angezeigt. Auffallend ist, dass "The Mystic Pizzeria" in dem Ergebnis nicht vorkommt. Sie ist zwar in der Tabelle Restaurants aufgeführt ist, aber keine passenden Einträge in der Ratings Tabelle; sie wird von den Ergebnissen ausgeschlossen. Dies veranschaulicht die selektive Natur von INNER JOIN, die sich auf die Überschneidung von Daten zwischen zwei Tabellen konzentriert.

RECHTE VERKNÜPFUNG (RIGHT OUTER JOIN)

RIGHT JOINauch bekannt als RIGHT OUTER JOIN, gibt alle Zeilen aus der rechten Tabelle (aufgelistet nach JOIN) zusammen mit den übereinstimmenden Zeilen aus der linken Tabelle (aufgelistet nach FROM) zurück. Wenn es keine Übereinstimmung gibt, enthält die Ergebnismenge immer noch die Zeile aus der rechten Tabelle. Die fehlenden Informationen aus der linken Tabelle werden jedoch als NULL angezeigt.

Ein RIGHT JOIN kann mehr Zeilen als ein INNER JOIN zurückgeben, wenn es Zeilen in der rechten Tabelle gibt, die keine Übereinstimmungen in der linken Tabelle haben.

RIGHT JOIN Syntax

Die grundlegende Syntax für einen RIGHT JOIN in SQL lautet wie folgt:

SELECT columns
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;

Hier, table1 und table2 die beiden Tabellen, die Sie verbinden. Die ON Klausel gibt die Bedingung an, unter der die Tabellen verbunden werden sollen. Normalerweise handelt es sich um eine Gleichheit zwischen den beiden ausgewählten Spalten.

Ein grundlegendes Beispiel für RIGHT JOIN

Um dies zu veranschaulichen, betrachten wir ein Szenario, in dem wir alle Restaurants und deren Bewertungen auflisten möchten. Wir möchten sicherstellen, dass jedes Restaurant in unserem Abfrageergebnis enthalten ist, unabhängig davon, ob es eine Bewertung erhalten hat oder nicht. Dies ist ein perfekter Anwendungsfall für RIGHT JOIN, da unser Ziel darin besteht, alle Datensätze aus der Restaurants Tabelle.

SELECT 
  Restaurants.Name, 
  Restaurants.OpeningYear, 
  Ratings.Rating, 
  Ratings.Reviewer
FROM Ratings
RIGHT JOIN Restaurants 
ON Ratings.RestaurantID = Restaurants.RestaurantID;

Hier sind die Ergebnisse:

NameOpeningYearRatingReviewer
Galactic Diner20184.8Alice
The Enchanted Fork20204.3Bob
Galactic Diner20184.9Charlie
Cove Café20194.0Dana
The Enchanted Fork20204.2Erin
Galactic Diner20185.0Frank
Galactic Diner20184.7Georgia
The Mystic Pizzeria2024NULLNULL

Wie RIGHT JOIN funktioniert

Logischerweise funktioniert ein RIGHT JOIN, indem zuerst alle Zeilen in der rechten Tabelle betrachtet werden, die in unserem Beispiel die Restaurants Tabelle. Für jede Zeile in dieser Tabelle wird versucht, eine passende Zeile in der linken Tabelle zu finden (Ratings) zu finden, basierend auf dem Gleichheitsausdruck, der in der ON Klausel definiert ist.

  • Übereinstimmende Zeilen: Für jedes Restaurant, das mindestens eine Bewertung erhalten hat, kombiniert die Abfrage die Details des Restaurants mit seinen Bewertungsdetails. Dazu gehören Restaurants wie "Galactic Diner" und "Cove Café", die übereinstimmende Einträge in der Ratings
  • Nicht übereinstimmende Zeilen: "The Mystic Pizzeria" hat noch keine Bewertungen erhalten, aber die Abfrage nimmt es trotzdem in das Ergebnis auf. Da es jedoch keine übereinstimmenden Bewertungen gibt, werden die Spalten Rating und Reviewer für dieses Restaurant mit NULL gefüllt. Das bedeutet, dass RIGHT JOIN besonders wertvoll ist, wenn das Ziel darin besteht, eine vollständige Ansicht der Datensätze aus einer Tabelle zu erhalten - unabhängig von der Existenz übereinstimmender Datensätze in der anderen Tabelle.

Der Hauptunterschied zwischen RIGHT JOIN und INNER JOIN

Der Hauptunterschied zwischen diesen beiden besteht darin, wie sie nicht übereinstimmende Zeilen behandeln:

  • INNER JOIN schließt Zeilen aus, für die es in beiden Tabellen keine Übereinstimmung gibt.
  • RIGHT JOIN schließt alle Zeilen aus der rechten Tabelle ein, unabhängig davon, ob es eine Übereinstimmung in der linken Tabelle gibt. Es füllt alle fehlenden Werte mit NULLs auf.

Das Verständnis dieser Unterscheidung ist entscheidend für die Entscheidung, welche Art von Join auf der Grundlage der Datenabrufanforderungen Ihrer Abfrage zu verwenden ist.

RIGHT JOIN vs. LEFT JOIN

Das Konzept von RIGHT JOIN ist leichter zu verstehen, wenn man seine Beziehung zu LEFT JOIN kennt. Im Wesentlichen sind RIGHT JOIN und LEFT JOIN zwei Seiten derselben Medaille. Während LEFT JOIN alle Zeilen aus der linken Tabelle und die übereinstimmenden Zeilen aus der rechten Tabelle zurückgibt, macht RIGHT JOIN das Gegenteil. Sie gibt alle Zeilen aus der rechten Tabelle und die übereinstimmenden Zeilen aus der linken Tabelle zurück.

In der SQL-Syntax ist die Umstellung einer Abfrage von RIGHT JOIN auf LEFT JOIN (oder umgekehrt) so einfach wie die Umkehrung der Reihenfolge der Tabellen in der Verknüpfung und die Änderung des Verknüpfungstyps. Durch diese duale Natur sind sie funktionell ähnlich, aber mit dem Schwerpunkt auf unterschiedlichen Tabellen in der Join-Operation.

Die Abfrage aus dem vorherigen Beispiel könnte auch mit LEFT JOIN geschrieben werden:

SELECT 
  Restaurants.Name, 
  Restaurants.OpeningYear, 
  Ratings.Rating, 
  Ratings.Reviewer
FROM Restaurants 
LEFT JOIN Ratings
ON Ratings.RestaurantID = Restaurants.RestaurantID;

Wir haben RIGHT JOIN in LEFT JOIN geändert. Wir haben auch die Reihenfolge der Tabellen geändert. Die Abfrage liefert das gleiche Ergebnis wie unser RIGHT JOIN Beispiel.

Warum LEFT JOIN üblicher ist

In der Praxis wird LEFT JOIN häufiger verwendet als RIGHT JOIN. Diese Vorliebe ist größtenteils auf die Art und Weise zurückzuführen, wie die Menschen über ihre SQL-Abfragen denken und sie strukturieren. Normalerweise beginnen SQL-Benutzer mit einer Primärtabelle (die linke Tabelle in einer LEFT JOIN) und nehmen dann bei Bedarf zusätzliche Daten aus anderen Tabellen auf.

Da die Lesereihenfolge von links nach rechts mit der Art und Weise übereinstimmt, wie Abfragen oft konzipiert und geschrieben werden, fühlt sich LEFT JOIN intuitiver an. Das macht RIGHT JOIN nicht weniger wichtig, es wird nur aufgrund des natürlichen Ablaufs der Entwicklung von SQL-Abfragen weniger häufig verwendet.

Wann sollte man RIGHT JOIN verwenden?

Obwohl weniger verbreitet, hat RIGHT JOIN seine Berechtigung. Er ist besonders nützlich in Szenarien, in denen Ihr Ausgangspunkt die sekundären Daten (die rechte Tabelle) sind und Sie deren Beziehung zu den primären Daten (die linke Tabelle) einbeziehen oder untersuchen wollen. Untertanding both LEFT and RIGHT JOINs erweitert Ihre SQL-Abfragefähigkeiten um Flexibilität und ermöglicht es Ihnen, Datenprobleme aus verschiedenen Blickwinkeln anzugehen.

RIGHT JOIN Beispiele und Erklärungen

Die Verwendung der Restaurants und Ratings tauschen wir die Tabellen aus, um Beispiele zu geben, die die Ausgabe von RIGHT JOIN erklären, wobei wir uns darauf konzentrieren, alle Restaurants einzuschließen, unabhängig davon, ob sie Bewertungen haben oder nicht.

Beispiel 1: Restaurants mit einer durchschnittlichen Bewertung über 4,5

Wir möchten alle Restaurants auflisten, die eine durchschnittliche Bewertung von über 4,5 haben. Wir möchten ihre Bewertungen einbeziehen (falls verfügbar).

SELECT 
  Restaurants.Name, 
  AVG(Ratings.Rating) AS AverageRating
FROM Restaurants
RIGHT JOIN Ratings 
ON Restaurants.RestaurantID = Ratings.RestaurantID
GROUP BY Restaurants.Name
HAVING AVG(Ratings.Rating) > 4.5;

Wie funktioniert das?

  • Diese Abfrage verknüpft die Tabelle Ratings Tabelle mit der Restaurants Tabelle über eine RIGHT JOIN.
  • Sie berechnet die durchschnittliche Bewertung für jedes Restaurant unter Verwendung des Parameters AVG()
  • Sie filtert nur die Restaurants mit einer durchschnittlichen Bewertung von mehr als 4,5 heraus. Sie verwendet die HAVING Klausel, die auf aggregierte Ergebnisse angewendet wird.

Ergebnis

NameAverageRating
Galactic Diner4.85

Erläuterung

Das "Galactic Diner" ist das einzige Restaurant mit einer Durchschnittsbewertung von über 4,5. Das am zweithöchsten bewertete Restaurant ist "The Enchanted Fork"; da seine durchschnittliche Bewertung 4,25 beträgt, wird es in der endgültigen Ausgabe nicht angezeigt.

Beispiel 2: Restaurants ohne Bewertungen

Zielsetzung: Auflistung aller Restaurants, die keine Bewertungen erhalten haben.

SQL-Abfrage

SELECT 
  Restaurants.Name, 
  Restaurants.OpeningYear
FROM Ratings
RIGHT JOIN Restaurants 
ON Ratings.RestaurantID = Restaurants.RestaurantID
WHERE Ratings.Rating IS NULL;

Wie funktioniert sie?

  • Diese Abfrage verwendet eine RIGHT JOIN, um sicherzustellen, dass alle Restaurants enthalten sind, auch die, die keine passenden Einträge in der Datenbank Ratings
  • Sie filtert nach Restaurants ohne Bewertungen, indem sie nach NULL in der Ratings

Ergebnis

NameOpeningYear
The Mystic Pizzeria2024

Erläuterung

"The Mystic Pizzeria'' erscheint hier allein, da es das einzige ist, das nicht bewertet wurde. Vielleicht handelt es sich um ein neues Restaurant, für das noch keine Bewertungen vorliegen. Dieses Beispiel zeigt die Wirksamkeit von RIGHT JOIN bei der Einbeziehung von Restaurants unabhängig von ihren Bewertungen.

Beispiel 3: Das Restaurant mit den meisten Bewertungen

Zielsetzung: Identifizieren der Restaurants mit den meisten Bewertungen als Indikator für die Beliebtheit.

SQL-Abfrage

SELECT 
  Restaurants.Name, 
  COUNT(Ratings.RatingID) AS NumberOfRatings
FROM Ratings
RIGHT JOIN Restaurants 
ON Ratings.RestaurantID = Restaurants.RestaurantID
GROUP BY Restaurants.Name
ORDER BY NumberOfRatings DESC
LIMIT 1;

Wie funktioniert das?

  • Durch Ausführen einer RIGHT JOIN zählt die Abfrage die Bewertungen für jedes Restaurant, um sicherzustellen, dass alle Restaurants berücksichtigt werden.
  • Sie ordnet die Ergebnisse an, um das Restaurant mit den meisten Bewertungen hervorzuheben.

Ergebnis

NameNumberOfRatings
Galactic Diner5

Erläuterung

"Galactic Diner" wird als das Restaurant mit den meisten Bewertungen angezeigt, was auf seine Beliebtheit hinweist. Dieses Szenario verwendet RIGHT JOIN, um alle Restaurants zurückzugeben, und nutzt dann Aggregatfunktionen, um das am besten bewertete Restaurant zu ermitteln.

Praktische Tipps für wirksame RIGHT JOINs

Zum Schluss geben wir Ihnen noch praktische Tipps, wie Sie RIGHT JOINin SQL effektiv nutzen können.

Verstehen der Reihenfolge von Tabellen

  • Fokus auf die richtige Tabelle: In einem RIGHT JOIN liegt der Fokus auf der richtigen Tabelle. Die richtige Tabelle ist diejenige, die in den Ergebnissen vollständig dargestellt wird. Stellen Sie sicher, dass die Tabelle, deren Daten Sie vollständig behalten wollen, unabhängig von der Übereinstimmung in der anderen Tabelle, auf der rechten Seite der Verknüpfung platziert wird.
  • Visualisierung der Daten: Bevor Sie Ihre Abfrage schreiben, visualisieren oder skizzieren Sie die Tabellen und ihre Beziehungen. Dies kann Ihnen helfen, klar zu erkennen, welche Tabelle auf der rechten Seite stehen sollte.

Behandlung von NULL-Werten

  • Erwarten Sie NULLs: In einer RIGHT JOIN führen Zeilen aus der rechten Tabelle ohne passende Zeilen in der linken Tabelle zu NULL Werten in den Spalten der linken Tabelle. Seien Sie darauf vorbereitet, diese NULL Werte in Ihrer Abfrage zu behandeln, indem Sie sie entweder herausfiltern oder sie in Ihrer Analyse verwenden.

Kombinieren von RIGHT JOIN mit anderen Klauseln

  • Verwendung von Aggregaten und GROUP BY: Aggregationsfunktionen und GROUP BY können effektiv mit RIGHT JOINverwendet werden, um Daten zusammenzufassen - z. B. um Restaurants mit einer durchschnittlichen Bewertung von 4,5 oder mehr zu finden, wie in Beispiel 1 gezeigt.
  • Vorsichtig filtern: Denken Sie bei der Verwendung von WHERE Klauseln mit RIGHT JOINdaran, dass Filter in der linken Tabelle Zeilen ausschließen können, wodurch die Wirksamkeit von RIGHT JOIN verringert wird. Filter in der rechten Tabelle schließen Zeilen aus der rechten Tabelle aus; sie können sich auch auf die passenden Zeilen in der linken Tabelle auswirken. Dies wurde in Beispiel 2, der Abfrage, die Restaurants ohne Bewertungen anzeigt, veranschaulicht.

Vermeiden von häufigen Fehlern mit RIGHT JOIN

  • Verwechseln Sie es nicht mit LEFT JOIN: Achten Sie darauf, die Logik von LEFT JOIN nicht mit RIGHT JOIN zu verwechseln. Sie sind zwar ähnlich, aber ihre Anwendung und die Ergebnisse können aufgrund der Reihenfolge der Tabellen sehr unterschiedlich sein.
  • Prüfen Sie auf unbeabsichtigte kartesische Produkte: Achten Sie auf unbeabsichtigte kartesische Produkte, bei denen Sie eine viel größere Ergebnismenge als beabsichtigt erhalten. Dies kann passieren, wenn die Verknüpfungsbedingung falsch angegeben oder ausgelassen wird.

Weitergehen mit RIGHT JOINs

Der beste Weg, sich mit RIGHT JOIN vertraut zu machen, ist die Praxis. Beginnen Sie mit unserem interaktiven SQL-JOINs Kurs durch. Er enthält über 90 praktische Übungen, mit denen Sie alle wichtigen Arten von SQL-JOINs üben können, die in SQL häufig verwendet werden, einschließlich RIGHT JOIN.

Sie können auch unseren SQL-JOINs Spickzettel herunterladen. Dies ist ein praktisches Nachschlagewerk für gängige SQL-Befehle, einschließlich RIGHT JOIN. Er ist nützlich, wenn Sie sich schnell an die Syntax und die besten Praktiken erinnern müssen, und er kann beim Schreiben von Abfragen mit SQL-JOINs eine große Hilfe sein.

Lesen Sie unsere Artikel zum Üben von SQL-JOINs und SQL Joins: 12 Übungsfragen mit detaillierten Antworten.

Wenn Sie Ihre SQL-Kenntnisse wirklich ausbauen möchten, probieren Sie unseren Alle für immer Plan aus. Damit erhalten Sie Zugang zu allen unseren aktuellen und zukünftigen SQL-Kursen. Jeden Monat veröffentlichen wir einen neuen SQL-Übungskurs. Wir bieten Kurse für alle SQL-Kenntnisstufen und die vier beliebtesten SQL-Dialekte an.

Lernen und erforschen Sie weiter, um das volle Potenzial von SQL für Ihre Datenanalyse zu erschließen!