Zusammenfassung :Dieses Tutorial zeigt Ihnen, wie Sie die innere Join-Klausel von SQLite verwenden, um Daten aus mehreren Tabellen abzufragen.
Einführung in die innere Join-Klausel von SQLite
In relationalen Datenbanken sind Daten oft auf viele zusammengehörige Tabellen verteilt. Eine Tabelle wird mithilfe von Fremdschlüsseln einer anderen Tabelle zugeordnet.
Um Daten aus mehreren Tabellen abzufragen, verwenden Sie INNER JOIN
Klausel. Der INNER JOIN
-Klausel kombiniert Spalten aus korrelierten Tabellen.
Angenommen, Sie haben zwei Tabellen:A und B.
A hat a1-, a2- und f-Spalten. B hat die Spalten b1, b2 und f. Die A-Tabelle ist über eine Fremdschlüsselspalte namens f.
mit der B-Tabelle verknüpftDas Folgende veranschaulicht die Syntax der inneren Join-Klausel:
SELECT a1, a2, b1, b2
FROM A
INNER JOIN B on B.f = A.f;
Code language: SQL (Structured Query Language) (sql)
Für jede Zeile in der A-Tabelle der INNER JOIN
-Klausel vergleicht den Wert der f-Spalte mit dem Wert der f-Spalte in der B-Tabelle. Wenn der Wert der Spalte f in der A-Tabelle gleich dem Wert der f-Spalte in der B-Tabelle ist, werden Daten aus den Spalten a1, a2, b1, b2 kombiniert und diese Zeile in die Ergebnismenge aufgenommen.
Mit anderen Worten, der INNER JOIN
-Klausel gibt Zeilen aus der A-Tabelle zurück, die die entsprechende Zeile in der B-Tabelle enthält.
Diese Logik wird angewendet, wenn Sie mehr als 2 Tische verbinden.
Siehe folgendes Beispiel.
Nur die Zeilen in der A-Tabelle:(a1,1), (a3,3) haben die entsprechenden Zeilen in der B-Tabelle (b1,1), (b2,3) sind in der Ergebnismenge enthalten.
Das folgende Diagramm veranschaulicht den INNER JOIN
Klausel:
SQLite INNER JOIN
Beispiele
Werfen wir einen Blick auf die tracks
und albums
Tabellen in der Beispieldatenbank. Die tracks
Tabellenlinks zu den albums
Tabelle über AlbumId
Spalte.
In den tracks
Tabelle, die AlbumId
Spalte ist ein Fremdschlüssel. Und in den albums
Tabelle, die AlbumId
ist der Primärschlüssel.
Um Daten von beiden tracks
abzufragen und albums
Tabellen verwenden Sie die folgende Anweisung:
SELECT
trackid,
name,
title
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid;
Code language: SQL (Structured Query Language) (sql)
Probieren Sie es aus
Für jede Zeile in der Tracks-Tabelle verwendet SQLite den Wert in albumid
Spalte der tracks
Tabelle, um sie mit dem Wert in albumid
zu vergleichen der albums
Tisch. Wenn SQLite eine Übereinstimmung findet, kombiniert es die Daten der Zeilen in beiden Tabellen in der Ergebnismenge.
Sie können die AlbumId
einschließen Spalten aus beiden Tabellen in der endgültigen Ergebnismenge, um den Effekt zu sehen.
SELECT
trackid,
name,
tracks.albumid AS album_id_tracks,
albums.albumid AS album_id_albums,
title
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid;
Code language: SQL (Structured Query Language) (sql)
Probieren Sie es aus
SQLite Inner Join – Beispiel mit 3 Tabellen
Siehe folgende Tabellen:tracks
albums
und artists
Ein Titel gehört zu einem Album und ein Album hat viele Titel. Die tracks
Tabelle, die den albums
zugeordnet ist Tabelle über albumid
Spalte.
Ein Album gehört einem Künstler und ein Künstler hat ein oder mehrere Alben. Die albums
Tabellenlinks zu den artists
Tabelle über artistid
Spalte.
Um Daten aus diesen Tabellen abzufragen, müssen Sie zwei innere Join-Klauseln in SELECT
verwenden Anweisung wie folgt:
SELECT
trackid,
tracks.name AS track,
albums.title AS album,
artists.name AS artist
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid
INNER JOIN artists ON artists.artistid = albums.artistid;
Code language: SQL (Structured Query Language) (sql)
Probieren Sie es aus
Sie können eine WHERE-Klausel verwenden, um die Titel und Alben des Künstlers mit der ID 10 wie folgt abzurufen:
SELECT
trackid,
tracks.name AS Track,
albums.title AS Album,
artists.name AS Artist
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid
INNER JOIN artists ON artists.artistid = albums.artistid
WHERE
artists.artistid = 10;
Code language: SQL (Structured Query Language) (sql)
Probieren Sie es aus
In diesem Tutorial haben Sie gelernt, wie Sie SQLite INNER JOIN
verwenden -Klausel zum Abfragen von Daten aus mehreren Tabellen.