Resumo :este tutorial mostra como usar a cláusula de junção interna do SQLite para consultar dados de várias tabelas.
Introdução à cláusula de junção interna do SQLite
Em bancos de dados relacionais, os dados geralmente são distribuídos em muitas tabelas relacionadas. Uma tabela é associada a outra tabela usando chaves estrangeiras.
Para consultar dados de várias tabelas, você usa
INNER JOIN
cláusula. O INNER JOIN
cláusula combina colunas de tabelas correlacionadas. Suponha que você tenha duas tabelas:A e B.
A tem colunas a1, a2 e f. B tem coluna b1, b2 e f. A tabela A é vinculada à tabela B usando uma coluna de chave estrangeira chamada f.
O seguinte ilustra a sintaxe da cláusula de junção interna:
SELECT a1, a2, b1, b2
FROM A
INNER JOIN B on B.f = A.f;
Code language: SQL (Structured Query Language) (sql)
Para cada linha na tabela A, o
INNER JOIN
cláusula compara o valor da coluna f com o valor da coluna f na tabela B. Se o valor da coluna f na tabela A for igual ao valor da coluna f na tabela B, ele combinará os dados das colunas a1, a2, b1, b2 e incluirá essa linha no conjunto de resultados. Em outras palavras, o
INNER JOIN
A cláusula retorna linhas da tabela A que tem a linha correspondente na tabela B. Essa lógica é aplicada se você unir mais de 2 tabelas.
Veja o exemplo a seguir.
Apenas as linhas da tabela A:(a1,1), (a3,3) possuem as linhas correspondentes na tabela B (b1,1), (b2,3) são incluídas no conjunto de resultados.
O diagrama a seguir ilustra o
INNER JOIN
cláusula:SQLite INNER JOIN
exemplos
Vamos dar uma olhada nas
tracks
e albums
tabelas no banco de dados de exemplo. As tracks
links de tabela para os albums
tabela via AlbumId
coluna. Nas
tracks
tabela, o AlbumId
coluna é uma chave estrangeira. E nos albums
tabela, o AlbumId
é a chave primária. Para consultar dados de ambas as
tracks
e albums
tabelas, você usa a seguinte instrução:SELECT
trackid,
name,
title
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid;
Code language: SQL (Structured Query Language) (sql)
Tente
Para cada linha na tabela de faixas, o SQLite usa o valor no
albumid
coluna das tracks
tabela para comparar com o valor no albumid
dos albums
tabela. Se o SQLite encontrar uma correspondência, ele combinará dados de linhas em ambas as tabelas no conjunto de resultados. Você pode incluir o
AlbumId
colunas de ambas as tabelas no conjunto de resultados final para ver o efeito. 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)
Tente
Junto interno SQLite – exemplo de 3 tabelas
Veja as seguintes tabelas:
tracks
albums
e artists
Uma faixa pertence a um álbum e um álbum tem muitas faixas. As
tracks
tabela associada aos albums
tabela via albumid
coluna. Um álbum pertence a um artista e um artista tem um ou vários álbuns. Os
albums
links de tabela para os artists
tabela via artistid
coluna. Para consultar dados dessas tabelas, você precisa usar duas cláusulas de junção interna no
SELECT
declaração da seguinte forma: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)
Tente
Você pode usar uma cláusula WHERE para obter as faixas e álbuns do artista com id 10 como a seguinte declaração:
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)
Tente
Neste tutorial, você aprendeu como usar SQLite
INNER JOIN
cláusula para consultar dados de várias tabelas.