Podsumowanie :ten samouczek pokazuje, jak używać klauzuli łączenia wewnętrznego SQLite do wysyłania zapytań o dane z wielu tabel.
Wprowadzenie do klauzuli łączenia wewnętrznego SQLite
W relacyjnych bazach danych dane są często rozmieszczane w wielu powiązanych tabelach. Tabela jest powiązana z inną tabelą za pomocą kluczy obcych.
Aby zapytać o dane z wielu tabel, użyj INNER JOIN klauzula. INNER JOIN klauzula łączy kolumny ze skorelowanych tabel.
Załóżmy, że masz dwie tabele:A i B.
A ma kolumny a1, a2 i f. B ma kolumnę b1, b2 i f. Tabela A łączy się z tabelą B za pomocą kolumny klucza obcego o nazwie f.
Poniższa ilustracja ilustruje składnię wewnętrznej klauzuli join:
SELECT a1, a2, b1, b2
FROM A
INNER JOIN B on B.f = A.f;Code language: SQL (Structured Query Language) (sql)
Dla każdego wiersza w tabeli A INNER JOIN porównuje wartość kolumny f z wartością kolumny f w tabeli B. Jeśli wartość kolumny f w tabeli A jest równa wartości kolumny f w tabeli B, łączy dane z kolumn a1, a2, b1, b2, i włącza ten wiersz do zestawu wyników.
Innymi słowy, INNER JOIN klauzula zwraca wiersze z tabeli A, która ma odpowiedni wiersz w tabeli B.
Ta logika jest stosowana, jeśli dołączysz do więcej niż 2 stołów.
Zobacz poniższy przykład.
Tylko wiersze w tabeli A:(a1,1), (a3,3) mają odpowiadające wiersze w tabeli B (b1,1), (b2,3) są uwzględnione w zestawie wyników.
Poniższy diagram ilustruje INNER JOIN klauzula:
SQLite INNER JOIN przykłady
Rzućmy okiem na tracks i albums tabele w przykładowej bazie danych. tracks tabela łączy do albums tabela przez AlbumId kolumna.
W tracks tabeli, AlbumId kolumna jest kluczem obcym. Oraz w albums tabeli, AlbumId jest kluczem podstawowym.
Aby zapytać o dane z obu tracks i albums tabele, użyj następującego stwierdzenia:
SELECT
trackid,
name,
title
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid;Code language: SQL (Structured Query Language) (sql) Wypróbuj
Dla każdego wiersza w tabeli utworów SQLite używa wartości z albumid kolumna tracks tabela do porównania z wartością w albumid albums stół. Jeśli SQLite znajdzie dopasowanie, łączy dane z wierszy w obu tabelach w zestawie wyników.
Możesz dołączyć AlbumId kolumny z obu tabel w końcowym zestawie wyników, aby zobaczyć efekt.
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) Wypróbuj
Sprzężenie wewnętrzne SQLite – przykład 3 tabel
Zobacz następujące tabele:tracks albums i artists
Jeden utwór należy do jednego albumu, a jeden album zawiera wiele utworów. tracks tabela powiązana z albums tabela przez albumid kolumna.
Jeden album należy do jednego artysty, a jeden artysta ma jeden lub wiele albumów. albums tabela zawiera linki do artists tabela przez artistid kolumna.
Aby wykonać zapytanie o dane z tych tabel, musisz użyć dwóch klauzul sprzężenia wewnętrznego w SELECT oświadczenie w następujący sposób:
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) Wypróbuj
Możesz użyć klauzuli WHERE, aby uzyskać utwory i albumy artysty o identyfikatorze 10, jako następujące stwierdzenie:
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) Wypróbuj
W tym samouczku nauczyłeś się korzystać z SQLite INNER JOIN klauzula do zapytania o dane z wielu tabel.