SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

Associação interna SQLite


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.