SQLite
 sql >> Datenbank >  >> RDS >> SQLite

SQLite Inner Join

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üpft

Das 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.