Ringkasan :dalam tutorial ini, Anda akan mempelajari cara mengemulasi SQLite full outer join menggunakan UNION
dan LEFT JOIN
klausa.
Pengantar SQL FULL OUTER JOIN
klausa
Secara teori, hasil dari FULL OUTER JOIN
adalah kombinasi dari LEFT JOIN
dan RIGHT JOIN
. Kumpulan hasil dari gabungan luar penuh memiliki NULL
nilai untuk setiap kolom tabel yang tidak memiliki baris yang cocok di tabel lain. Untuk baris yang cocok, FULL OUTER JOIN
menghasilkan satu baris dengan nilai dari kolom baris di kedua tabel.
Gambar berikut mengilustrasikan hasil dari FULL OUTER JOIN
klausa:
Lihat cats
berikut dan dogs
tabel.
-- create and insert data into the dogs table
CREATE TABLE dogs (
type TEXT,
color TEXT
);
INSERT INTO dogs(type, color)
VALUES('Hunting','Black'), ('Guard','Brown');
-- create and insert data into the cats table
CREATE TABLE cats (
type TEXT,
color TEXT
);
INSERT INTO cats(type,color)
VALUES('Indoor','White'),
('Outdoor','Black');
Code language: SQL (Structured Query Language) (sql)
Pernyataan berikut menggunakan FULL OUTER JOIN
klausa untuk meminta data dari dogs
dan cats
tabel.
SELECT *
FROM dogs
FULL OUTER JOIN cats
ON dogs.color = cats.color;
Code language: SQL (Structured Query Language) (sql)
Berikut hasil dari pernyataan di atas:
Jenis | Warna | Ketik | Warna |
---|---|---|---|
Berburu | Hitam | Luar ruangan | Hitam |
Penjaga | Coklat | NULL | NULL |
NULL | NULL | Dalam ruangan | Putih |
Sayangnya, SQLite tidak mendukung RIGHT JOIN
klausa dan juga FULL OUTER JOIN
ayat. Namun, Anda dapat dengan mudah meniru FULL OUTER JOIN
dengan menggunakan LEFT JOIN
klausa.
Emulasi SQLite full outer join
Pernyataan berikut mengemulasi FULL OUTER JOIN
klausa dalam SQLite:
SELECT d.type,
d.color,
c.type,
c.color
FROM dogs d
LEFT JOIN cats c USING(color)
UNION ALL
SELECT d.type,
d.color,
c.type,
c.color
FROM cats c
LEFT JOIN dogs d USING(color)
WHERE d.color IS NULL;
Code language: SQL (Structured Query Language) (sql)
Cara kerja kueri.
- Karena SQLilte tidak mendukung
RIGHT JOIN
klausa, kami menggunakanLEFT JOIN
klausa diSELECT
second kedua sebagai gantinya dan ganti posisicats
dandogs
tabel. UNION ALL
klausa mempertahankan baris duplikat dari kumpulan hasil kedua kueri.WHERE
klausa diSELECT
second kedua pernyataan menghapus baris yang sudah termasuk dalam set hasilSELECT
. pertama pernyataan.
Dalam tutorial ini, Anda telah mempelajari cara menggunakan UNION ALL
dan LEFT JOIN
klausa untuk meniru SQLite FULL OUTER JOIN
klausa.