SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Połączenie wewnętrzne SQLite

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Różnica między NullIf() i IfNull() w SQLite

  2. ustaw poprawnie sqlite db w Androidzie

  3. Konwertuj wartości NULL na domyślną wartość kolumny podczas wstawiania danych do SQLite

  4. SQLite zwrócił kod błędu 14

  5. Pokój - Korzystanie z zewnętrznych SQLites oraz wewnętrznej bazy danych