Ringkasan :dalam tutorial ini, Anda akan mempelajari cara menggunakan SQLite CROSS JOIN
untuk menggabungkan dua atau lebih kumpulan hasil dari beberapa tabel.
Pengantar SQLite CROSS JOIN
klausa
Jika Anda menggunakan LEFT JOIN
, INNER JOIN
, atau CROSS JOIN
tanpa ON
atau USING
klausa, SQLite menghasilkan produk Cartesian dari tabel yang terlibat. Jumlah baris dalam produk Cartesian adalah produk dari jumlah baris di setiap tabel yang terlibat.
Misalkan, kita memiliki dua tabel A dan B. Pernyataan berikut melakukan cross join dan menghasilkan produk kartesius dari baris dari tabel A dan B.
SELECT *
FROM A JOIN B;
Code language: SQL (Structured Query Language) (sql)
SELECT *
FROM A
INNER JOIN B;
Code language: SQL (Structured Query Language) (sql)
SELECT *
FROM A
CROSS JOIN B;
Code language: SQL (Structured Query Language) (sql)
SELECT *
FROM A, B;
Code language: SQL (Structured Query Language) (sql)
Misalkan, tabel A memiliki N baris dan tabel B memiliki M baris, CROSS JOIN
dari dua tabel ini akan menghasilkan kumpulan hasil yang berisi NxM
baris.
Bayangkan jika Anda memiliki tabel ketiga C dengan K
baris, hasil dari CROSS JOIN
klausa dari ketiga tabel ini akan berisi NxMxK
baris, yang mungkin sangat besar. Oleh karena itu, Anda harus sangat berhati-hati saat menggunakan CROSS JOIN
klausa.
Anda menggunakan INNER JOIN
dan LEFT JOIN
klausa lebih sering daripada CROSS JOIN
ayat. Namun, Anda akan menemukan CROSS JOIN
klausa sangat berguna dalam beberapa kasus.
Misalnya, ketika Anda ingin memiliki matriks yang memiliki dua dimensi yang diisi dengan data lengkap seperti data anggota dan tanggal dalam database keanggotaan. Anda ingin memeriksa petugas anggota untuk semua tanggal yang relevan. Dalam hal ini, Anda dapat menggunakan CROSS JOIN
klausa seperti pernyataan berikut:
SELECT name,
date
FROM members
CROSS JOIN dates;
Code language: SQL (Structured Query Language) (sql)
SQLite CROSS JOIN
contoh klausa
Pernyataan berikut membuat ranks
dan suits
tabel yang menyimpan peringkat dan setelan untuk setumpuk kartu dan memasukkan data lengkap ke dalam dua tabel ini.
CREATE TABLE ranks (
rank TEXT NOT NULL
);
CREATE TABLE suits (
suit TEXT NOT NULL
);
INSERT INTO ranks(rank)
VALUES('2'),('3'),('4'),('5'),('6'),('7'),('8'),('9'),('10'),('J'),('Q'),('K'),('A');
INSERT INTO suits(suit)
VALUES('Clubs'),('Diamonds'),('Hearts'),('Spades');
Code language: SQL (Structured Query Language) (sql)
Pernyataan berikut menggunakan CROSS JOIN
klausa untuk mengembalikan setumpuk data kartu yang lengkap:
SELECT rank,
suit
FROM ranks
CROSS JOIN
suits
ORDER BY suit;
Code language: SQL (Structured Query Language) (sql)
peringkat | setelan |
---|---|
2 | Klub |
3 | Klub |
4 | Klub |
5 | Klub |
6 | Klub |
7 | Klub |
8 | Klub |
9 | Klub |
10 | Klub |
J | Klub |
Q | Klub |
K | Klub |
A | Klub |
2 | Berlian |
3 | Berlian |
4 | Berlian |
5 | Berlian |
6 | Berlian |
7 | Berlian |
8 | Berlian |
9 | Berlian |
10 | Berlian |
J | Berlian |
Q | Berlian |
K | Berlian |
A | Berlian |
2 | Hati |
3 | Hati |
4 | Hati |
5 | Hati |
6 | Hati |
7 | Hati |
8 | Hati |
9 | Hati |
10 | Hati |
J | Hati |
Q | Hati |
K | Hati |
A | Hati |
2 | Sekop |
3 | Sekop |
4 | Sekop |
5 | Sekop |
6 | Sekop |
7 | Sekop |
8 | Sekop |
9 | Sekop |
10 | Sekop |
J | Sekop |
Q | Sekop |
K | Sekop |
A | Sekop |
Dalam tutorial ini, Anda telah mempelajari cara menggunakan klausa SQLite CROSS JOIN untuk menghasilkan produk Cartesian dari beberapa tabel yang terlibat dalam gabungan.