SQLite
 sql >> Database >  >> RDS >> SQLite

Join interno di SQLite

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.