INNER
JOIN adalah tipe join yang akan kita bahas pertama. Tipe join ini akan
mengambil semua row dari table asal dan table tujuan dengan kondisi nilai key
yang terkait saja - jika ada, dan jika tidak maka row tersebut tidak akan
muncul.
Kalau
tidak terdapat kondisi key terkait antar table, maka semua row dari kedua table
dikombinasikan.
Syntax
dari INNER JOIN adalah sebagai berikut :
table_reference
[INNER] JOIN table_factor [join_condition]
Terlihat
bahwa keyword INNER boleh digunakan secara eksplisit atau tidak. Jika tidak
digunakan maka konstruksi JOIN tanpa keyword lain dianggap sebagai INNER JOIN.
SELECT
* FROM ms_cabang INNER JOIN ms_kota ON ms_cabang.kode_kota =
ms_kota.kode_kota
Hasil
terlihat seperti gambar berikut ini. Disini table sumber adalah ms_cabang
(left) mencari referensi row lain dari table ms_kota (right) dengan kondisi
nilai kode_kota diantara kedua table tersebut sama. Kondisi ini
menggunakan keyword ON.
Dengan
panduan gambar, kita lihat bahwa tiap row dari ms_cabang akan dicari padanan
row-nya di ms_kota :
- untuk row pertama kita memiliki kode_kota dengan nilai "KOTA-003", ini akan dicari referensinya ke table ms_kota untuk nilai yang sama dan kita dapatkan row dengan nilai nama_kota "Lhokseumawe" adalah padanannya.
- untuk row kedua kita memiliki kode_kota dengan nilai "KOTA-083", ini akan dicari referensinya ke table ms_kota untuk nilai yang sama dan kita dapatkan row dengan nilai nama_kota "Bau-bau" adalah padanannya.
- demikian seterusnya.

Sekarang mari
kita coba hapus referensi untuk "Lhokseumawe" dari table ms_kota :
DELETE FROM
ms_kota WHERE nama_kota = 'Lhokseumawe';
Setelah itu coba
jalankan kembali perintah JOIN di atas, Anda akan mendapatkan hasil JOIN tanpa
referensi row "Lhokseumawe". Jadi INNER JOIN dengan kondisi
mengharuskan row dari tiap table memiliki nilai yang sama untuk column
referensinya (dalam hal ini kode_kota).

Kembalikan lagi
row referensi yang kita hapus tadi dengan perintah INSERT berikut ini :
INSERT INTO
`ms_kota` VALUES ('KOTA-003','Lhokseumawe','P33')
SELECT * FROM
ms_cabang INNER JOIN ms_kota
Hasilnya
adalah untuk tiap row dari ms_cabang akan dikombinasikan dengan semua
row dari ms_kota - contoh hasilnya terlihat seperti pada gambar di
bawah ini.

INNER
JOIN antar table "ms_cabang", "ms_kota" dan
"ms_propinsi"
SELECT
ms_cabang.nama_cabang,
ms_kota.nama_kota,
ms_propinsi.nama_propinsi
FROM
ms_cabang
INNER JOIN
ms_kota ON ms_cabang.kode_kota = ms_kota.kode_kota
INNER JOIN
ms_propinsi ON ms_kota.kode_propinsi = ms_propinsi.kode_propinsi
Hasil eksekusi
terlihat seperti gambar berikut. Dengan penggabungan ketiga table ini sekarang
kita dapatkan setiap cabang memiliki informasi nama kota dan nama propinsi
dimana cabang tersebut berada.

Implisit INNER JOIN dengan Koma
INNER JOIN antar
table secara implisit dapat menggunakan daftar table yang dipisah dengan tanda
koma (,). Pengkondisian menggunakan klausa where.
SELECT
ms_cabang.nama_cabang,
ms_kota.nama_kota ,
ms_propinsi.nama_propinsi
FROM ms_cabang
, ms_kota
, ms_propinsi
WHERE
ms_cabang.kode_kota = ms_kota.kode_kota
AND
ms_kota.kode_propinsi = ms_propinsi.kode_propinsi
0 comments:
Post a Comment