Riepilogo :questo tutorial mostra come utilizzare la clausola di inner join di SQLite per eseguire query sui dati da più tabelle.
Introduzione alla clausola di inner join di SQLite
Nei database relazionali, i dati sono spesso distribuiti in molte tabelle correlate. Una tabella è associata a un'altra tabella utilizzando chiavi esterne.
Per eseguire query sui dati da più tabelle, utilizzi INNER JOIN
clausola. Il INNER JOIN
La clausola combina colonne di tabelle correlate.
Supponiamo di avere due tabelle:A e B.
A ha colonne a1, a2 e f. B ha le colonne b1, b2 e f. La tabella A si collega alla tabella B utilizzando una colonna di chiave esterna denominata f.
Di seguito viene illustrata la sintassi della clausola inner join:
SELECT a1, a2, b1, b2
FROM A
INNER JOIN B on B.f = A.f;
Code language: SQL (Structured Query Language) (sql)
Per ogni riga della tabella A, il INNER JOIN
La clausola confronta il valore della colonna f con il valore della colonna f nella tabella B. Se il valore della colonna f nella tabella A è uguale al valore della colonna f nella tabella B, combina i dati delle colonne a1, a2, b1, b2 e include questa riga nel set di risultati.
In altre parole, il INNER JOIN
La clausola restituisce righe dalla tabella A che ha la riga corrispondente nella tabella B.
Questa logica viene applicata se unisci più di 2 tabelle.
Vedi l'esempio seguente.
Solo le righe nella tabella A:(a1,1), (a3,3) hanno le righe corrispondenti nella tabella B (b1,1), (b2,3) sono incluse nel set di risultati.
Il diagramma seguente illustra il INNER JOIN
clausola:
SQLite INNER JOIN
esempi
Diamo un'occhiata ai tracks
e albums
tabelle nel database di esempio. Le tracks
link tabella agli albums
tabella tramite AlbumId
colonna.
Nelle tracks
tabella, l'AlbumId
colonna è una chiave esterna. E negli albums
tabella, l'AlbumId
è la chiave primaria.
Per interrogare i dati da entrambi i tracks
e albums
tabelle, usi la seguente istruzione:
SELECT
trackid,
name,
title
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid;
Code language: SQL (Structured Query Language) (sql)
Provalo
Per ogni riga nella tabella delle tracce, SQLite utilizza il valore in albumid
colonna delle tracks
tabella da confrontare con il valore in albumid
degli albums
tavolo. Se SQLite trova una corrispondenza, combina i dati delle righe in entrambe le tabelle nel set di risultati.
Puoi includere AlbumId
colonne di entrambe le tabelle nel set di risultati finali per vedere l'effetto.
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)
Provalo
Internal join di SQLite – Esempio di 3 tabelle
Vedi le seguenti tabelle:tracks
albums
e artists
Una traccia appartiene a un album e un album contiene molte tracce. Le tracks
tabella associata agli albums
tabella tramite albumid
colonna.
Un album appartiene a un artista e un artista ha uno o più album. Gli albums
tabella link agli artists
tabella tramite artistid
colonna.
Per interrogare i dati da queste tabelle, devi usare due clausole di inner join in SELECT
dichiarazione come segue:
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)
Provalo
Puoi utilizzare una clausola WHERE per ottenere i brani e gli album dell'artista con ID 10 come la seguente dichiarazione:
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)
Provalo
In questo tutorial, hai imparato a usare SQLite INNER JOIN
clausola per interrogare i dati da più tabelle.