OpenSearch mendukung empat jenis operasi JOIN: left join, inner join, semi join, dan anti join.
Left outer join
-
Left join mengembalikan semua baris dari tabel kiri, bahkan jika tidak terdapat baris yang cocok di tabel kanan.
SELECT
t1.id, t2.id
FROM
tj_shop AS t1
LEFT JOIN
tj_item AS t2
ON
t1.id = t2.id
Jika nilai-nilai di tabel kanan tidak unik, hindari penggunaan terlalu banyak operasi left join secara berurutan untuk mencegah pembengkakan data selama prosedur JOIN.
Inner join
-
Inner join mengembalikan baris-baris yang memenuhi kondisi ON. Kata kunci
innerbersifat opsional.
SELECT
t1.id, t2.id
FROM
tj_shop AS t1
JOIN
tj_item AS t2
ON
t1.id = t2.id
-
Jika kondisi ON selalu bernilai TRUE, operasi tersebut mengembalikan Produk Kartesius dari kedua tabel. Dua pernyataan SQL berikut ini setara.
SELECT
t1.id, t2.id
FROM
tj_shop AS t1
JOIN
tj_item AS t2
ON
TRUE
SELECT
t1.id, t2.id
FROM
tj_shop, tj_item;
Semi join
-
Pada semi join, tabel kanan hanya digunakan untuk memfilter data dari tabel kiri dan tidak muncul dalam set hasil.
-
Ketika kondisi
jointerpenuhi, operasi tersebut mengembalikan data dari tabel kiri. Satu baris dari tabeltj_shopdikembalikan jikaid-nya ada di tabeltj_item.
SELECT
id
FROM
tj_shop
WHERE id IN (
SELECT
id
FROM
tj_item
)SELECT
id
FROM
tj_shop
WHERE EXISTS (
SELECT
id
FROM
tj_item
WHERE
tj_shop.id = id
)
Anti join
-
Pada anti join, tabel kanan hanya digunakan untuk memfilter data dari tabel kiri dan tidak muncul dalam set hasil.
-
Ketika kondisi
jointidak terpenuhi, operasi tersebut mengembalikan data dari tabel kiri. Satu baris dari tabeltj_shopdikembalikan jikaid-nya tidak ada di tabeltj_item.
SELECT
id
FROM
tj_shop
WHERE id NOT IN (
SELECT
id
FROM
tj_item
)SELECT
id
FROM
tj_shop
WHERE NOT EXISTS (
SELECT
id
FROM
tj_item
WHERE
tj_shop.id = id
)