概要 :このチュートリアルでは、SQLite内部結合句を使用して複数のテーブルからデータをクエリする方法を示します。
SQLite内部結合句の概要
リレーショナルデータベースでは、データは多くの場合、関連する多くのテーブルに分散されます。テーブルは、外部キーを使用して別のテーブルに関連付けられています。
複数のテーブルからデータをクエリするには、INNER JOIN
を使用します 句。 INNER JOIN
句は、相関テーブルの列を結合します。
AとBの2つのテーブルがあるとします。
Aにはa1、a2、およびf列があります。 Bにはb1、b2、およびf列があります。 Aテーブルは、fという名前の外部キー列を使用してBテーブルにリンクします。
次に、内部結合句の構文を示します。
SELECT a1, a2, b1, b2
FROM A
INNER JOIN B on B.f = A.f;
Code language: SQL (Structured Query Language) (sql)
Aテーブルの各行について、INNER JOIN
句は、f列の値をBテーブルのf列の値と比較します。 Aテーブルのf列の値がBテーブルのf列の値と等しい場合、a1、a2、b1、b2、列のデータを結合し、この行を結果セットに含めます。
つまり、INNER JOIN
句は、Bテーブルに対応する行があるAテーブルから行を返します。
このロジックは、3つ以上のテーブルを結合する場合に適用されます。
次の例を参照してください。
![](http://www.sqldat.com/article/uploadfiles/202205/2022051314214731.png)
結果セットには、Aテーブルの行のみ:(a1,1)、(a3,3)のBテーブルの対応する行(b1,1)、(b2,3)が含まれます。
次の図は、INNER JOIN
を示しています。 条項:
![](http://www.sqldat.com/article/uploadfiles/202205/2022051314214787.png)
SQLite INNER JOIN
例
tracks
を見てみましょう およびalbums
サンプルデータベースのテーブル。 tracks
albums
へのテーブルリンク AlbumId
経由のテーブル 列。
![](http://www.sqldat.com/article/uploadfiles/202205/2022051314214725.png)
tracks
内 テーブル、AlbumId
列は外部キーです。そしてalbums
で テーブル、AlbumId
主キーです。
両方のtracks
からデータをクエリするには およびalbums
テーブルでは、次のステートメントを使用します:
SELECT
trackid,
name,
title
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid;
Code language: SQL (Structured Query Language) (sql)
試してみてください
![](http://www.sqldat.com/article/uploadfiles/202205/2022051314214718.jpg)
トラックテーブルの各行について、SQLiteはalbumid
の値を使用します tracks
の列 albumid
の値と比較するテーブル albums
の テーブル。 SQLiteが一致するものを見つけると、結果セットの両方のテーブルの行のデータを結合します。
AlbumId
を含めることができます 最終結果セットの両方のテーブルの列を使用して、効果を確認します。
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)
試してみてください
![](http://www.sqldat.com/article/uploadfiles/202205/2022051314214758.jpg)
SQLite内部結合–3つのテーブルの例
次の表を参照してください:tracks
albums
およびartists
![](http://www.sqldat.com/article/uploadfiles/202205/2022051314214704.png)
1つのトラックは1つのアルバムに属し、1つのアルバムには多くのトラックがあります。 tracks
albums
に関連付けられたテーブル albumid
経由のテーブル 列。
1つのアルバムは1つのアーティストに属し、1つのアーティストには1つまたは複数のアルバムがあります。 albums
artists
へのテーブルリンク artistid
経由のテーブル 列。
これらのテーブルからデータをクエリするには、SELECT
で2つの内部結合句を使用する必要があります 次のようなステートメント:
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)
試してみてください
![](http://www.sqldat.com/article/uploadfiles/202205/2022051314214722.jpg)
WHERE句を使用して、次のステートメントとしてID10のアーティストのトラックとアルバムを取得できます。
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)
試してみてください
![](http://www.sqldat.com/article/uploadfiles/202205/2022051314214719.jpg)
このチュートリアルでは、SQLite INNER JOIN
の使用方法を学びました。 複数のテーブルからデータをクエリする句。