Ringkasan :tutorial ini menunjukkan cara menggunakan klausa gabungan dalam SQLite untuk mengkueri data dari beberapa tabel.
Pengantar klausa gabungan dalam SQLite
Dalam database relasional, data sering didistribusikan di banyak tabel terkait. Sebuah tabel diasosiasikan dengan tabel lain menggunakan kunci asing.
Untuk mengkueri data dari beberapa tabel, gunakan INNER JOIN
ayat. INNER JOIN
klausa menggabungkan kolom dari tabel yang berkorelasi.
Misalkan Anda memiliki dua tabel:A dan B.
A memiliki kolom a1, a2, dan f. B memiliki kolom b1, b2, dan f. Tabel A menautkan ke tabel B menggunakan kolom kunci asing bernama f.
Berikut ini mengilustrasikan sintaks klausa inner join:
SELECT a1, a2, b1, b2
FROM A
INNER JOIN B on B.f = A.f;
Code language: SQL (Structured Query Language) (sql)
Untuk setiap baris dalam tabel A, INNER JOIN
klausa membandingkan nilai kolom f dengan nilai kolom f dalam tabel B. Jika nilai kolom f di tabel A sama dengan nilai kolom f di tabel B, maka data dari a1, a2, b1, b2, kolom akan digabungkan dan baris ini termasuk dalam kumpulan hasil.
Dengan kata lain, INNER JOIN
klausa mengembalikan baris dari tabel A yang memiliki baris yang sesuai di tabel B.
Logika ini diterapkan jika Anda menggabungkan lebih dari 2 tabel.
Lihat contoh berikut.
Hanya baris dalam tabel A:(a1,1), (a3,3) memiliki baris yang sesuai dalam tabel B (b1,1), (b2,3) yang disertakan dalam kumpulan hasil.
Diagram berikut menggambarkan INNER JOIN
klausa:
SQLite INNER JOIN
contoh
Mari kita lihat tracks
dan albums
tabel dalam database sampel. tracks
tautan tabel ke albums
tabel melalui AlbumId
kolom.
Di tracks
tabel, AlbumId
kolom adalah kunci asing. Dan di albums
tabel, AlbumId
adalah kunci utama.
Untuk menanyakan data dari kedua tracks
dan albums
tabel, Anda menggunakan pernyataan berikut:
SELECT
trackid,
name,
title
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid;
Code language: SQL (Structured Query Language) (sql)
Cobalah
Untuk setiap baris dalam tabel trek, SQLite menggunakan nilai di albumid
kolom tracks
tabel untuk membandingkan dengan nilai di albumid
dari albums
meja. Jika SQLite menemukan kecocokan, SQLite akan menggabungkan data baris di kedua tabel dalam kumpulan hasil.
Anda dapat menyertakan AlbumId
kolom dari kedua tabel di hasil akhir diatur untuk melihat efeknya.
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)
Cobalah
Gabungan dalam SQLite – contoh 3 tabel
Lihat tabel berikut:tracks
albums
dan artists
Satu lagu milik satu album dan satu album memiliki banyak lagu. tracks
tabel yang terkait dengan albums
tabel melalui albumid
kolom.
Satu album milik satu artis dan satu artis memiliki satu atau banyak album. albums
tautan tabel ke artists
tabel melalui artistid
kolom.
Untuk mengkueri data dari tabel ini, Anda perlu menggunakan dua klausa gabungan dalam di SELECT
pernyataan sebagai berikut:
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)
Cobalah
Anda dapat menggunakan klausa WHERE untuk mendapatkan trek dan album artis dengan id 10 seperti pernyataan berikut:
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)
Cobalah
Dalam tutorial ini, Anda telah mempelajari cara menggunakan SQLite INNER JOIN
klausa untuk meminta data dari beberapa tabel.