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.