Resumen :este tutorial le muestra cómo usar la cláusula de combinación interna de SQLite para consultar datos de varias tablas.
Introducción a la cláusula de unión interna de SQLite
En las bases de datos relacionales, los datos a menudo se distribuyen en muchas tablas relacionadas. Una tabla se asocia con otra tabla mediante claves foráneas.
Para consultar datos de varias tablas, usa INNER JOIN
cláusula. La INNER JOIN
La cláusula combina columnas de tablas correlacionadas.
Suponga que tiene dos tablas:A y B.
A tiene columnas a1, a2 y f. B tiene columnas b1, b2 y f. La tabla A se vincula a la tabla B mediante una columna de clave externa denominada f.
A continuación se ilustra la sintaxis de la cláusula de unión 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 fila en la tabla A, el INNER JOIN
La cláusula compara el valor de la columna f con el valor de la columna f en la tabla B. Si el valor de la columna f en la tabla A es igual al valor de la columna f en la tabla B, combina datos de las columnas a1, a2, b1, b2 e incluye esta fila en el conjunto de resultados.
En otras palabras, el INNER JOIN
cláusula devuelve filas de la tabla A que tiene la fila correspondiente en la tabla B.
Esta lógica se aplica si te unes a más de 2 mesas.
Vea el siguiente ejemplo.

Solo las filas de la tabla A:(a1,1), (a3,3) tienen las filas correspondientes de la tabla B (b1,1), (b2,3) se incluyen en el conjunto de resultados.
El siguiente diagrama ilustra el INNER JOIN
cláusula:

SQLite INNER JOIN
ejemplos
Echemos un vistazo a las tracks
y albums
tablas en la base de datos de ejemplo. Las tracks
la tabla enlaza con los albums
tabla a través de AlbumId
columna.

En las tracks
tabla, el AlbumId
columna es una clave foránea. Y en los albums
tabla, el AlbumId
es la clave principal.
Para consultar datos de ambas tracks
y albums
tablas, utiliza la siguiente instrucción:
SELECT
trackid,
name,
title
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid;
Code language: SQL (Structured Query Language) (sql)
Pruébalo

Para cada fila en la tabla de pistas, SQLite usa el valor en el albumid
columna de las tracks
tabla para comparar con el valor en el albumid
de los albums
mesa. Si SQLite encuentra una coincidencia, combina datos de filas en ambas tablas en el conjunto de resultados.
Puede incluir el AlbumId
columnas de ambas tablas en el conjunto de resultados final para ver el efecto.
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)
Pruébalo

Unión interna de SQLite:ejemplo de 3 tablas
Ver las siguientes tablas:tracks
albums
y artists

Una pista pertenece a un álbum y un álbum tiene muchas pistas. Las tracks
tabla asociada con los albums
tabla a través de albumid
columna.
Un álbum pertenece a un artista y un artista tiene uno o varios álbumes. Los albums
enlaces de la tabla a los artists
tabla a través de artistid
columna.
Para consultar datos de estas tablas, debe usar dos cláusulas de unión interna en el SELECT
declaración de la siguiente manera:
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)
Pruébalo

Puede usar una cláusula WHERE para obtener las pistas y álbumes del artista con id 10 como la siguiente declaración:
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)
Pruébalo

En este tutorial, ha aprendido a usar SQLite INNER JOIN
cláusula para consultar datos de varias tablas.