TABEL JOIN
Secara
singkat join adalah operasi menghubungkan antar beberapa table sehingga
terbentuk satu set data yang baru yang
dilakukan melalui kolom / key tertentu yang memiliki nilai terkait untuk
mendapatkan satu
set data dengan informasi
lengkap. Lengkap disini artinya kolom data didapatkan dari kolom-kolom hasil
join antar table tersebut.
Bentuk umum JOIN :
SELECT table1.column,
table2.column FROM tabel1, tabel2
WHERE tabel1.column=table2.column;
INNER JOIN
Inner join berfungsi sebagai pemetaan relasi
one-to-one (satu ke satu), yaitu dimana hanya satu record tabel A yang sama
dengan satu record tabel B, dan hanya satu record tabel B yang sama dengan satu
record tabel
Bentuk Umum : SELECT Field FROM tabel1 INNER
JOIN tabel 2 ON kondisi;
Dengan INNER JOIN hanya akan
ditampilkan baris-baris yang satu sama lain memiliki kecocokan.
Contoh:
SELECT a.nama, b.gejala
FROM pasien a
INNER JOIN gejala b
ON b.id = a.id;
|------ |---------- |
| nama | gejala |
|------ |---------- |
| John | Demam |
| Jane | Pusing |
| Mike | Mual |
SELECT a.nama, b.gejala
FROM pasien a
INNER JOIN gejala b
ON b.id = a.id;
|------ |---------- |
| nama | gejala |
|------ |---------- |
| John | Demam |
| Jane | Pusing |
| Mike | Mual |
LEFT (OUTER)
JOIN
Left (outer) join berfungsi sebagai pemetaan
relasi many-to-one (banyak ke satu), yaitu dimana beberapa record tabel A yang
sama dengan satu record tabel B. Di sini kita akan menampilkan tabel
disebelah kanannya (dalam hal ini tabel nilai) dengan NULL jika tidak
terdapat hubungan antara tabel disebelah kiri (dalam hal ini tabel siswa).
Bentuk Umum
: SELECT field FROM tabel1 LEFT JOIN tabel2 ON kondisi;
Sebuah query dengan LEFT JOIN
akan menampilkan semua baris dari tabel sebelah kiri (pertama/utama atau
pasien) dengan gabungan dari tabel sebelah kanan (kedua atau symptom).
Contoh:
SELECT a.nama, b.gejala
FROM pasien a
LEFT JOIN gejala b
ON b.id = a.id;
|-------|----------|
| nama | gejala |
|-------|----------|
| John | Demam |
| Jane | Pusing |
SELECT a.nama, b.gejala
FROM pasien a
LEFT JOIN gejala b
ON b.id = a.id;
|-------|----------|
| nama | gejala |
|-------|----------|
| John | Demam |
| Jane | Pusing |
|
Mike | Mual |
| Doel | NULL |
| Doel | NULL |
Perbedaannya dengan INNER JOIN
ialah, pada LEFT JOIN seluruh baris dari
tabel pertama akan ditampilkan meskipun tidak ada kecocokan baris pada tabel
kedua. Lihat contoh diatas, pasien Doel tidak memiliki data symptom sehingga
tertampil NULL (NULL disini menyatakan bahwa tidak ada data pada kolom
tersebut). Selain itu, posisi tabel jadi mempunyai makna, yaitu tabel kiri atau
pertama (ialah tabel sebelum 'LEFT JOIN') akan menjadi tabel utama yang diquery
terlebih dahulu, baru kemudian dicarikan kecocokannya dengan tabel kanan atau
kedua (ialah tabel setelah 'LEFT JOIN').
RIGHT/OUTER JOIN
Kebalikan dari LEFT JOIN, jika idak menemukan
hubungan dengan tabel disebelah kiri maka akan ditampilkan NULL. Right
outer join berfungsi sebagai pemetaan relasi one-to-many (satu ke banyak),
yaitu dimana hanya satu record tabel A yang sama dengan beberapa record tabel
B.
Bentuk Umum : SELECT field FROM tabel1 RIGHT
JOIN tabel2 ON kondisi;
Query RIGHT JOIN hampir sama
dengan LEFT JOIN, hanya saja posisinya terbalik, yaitu akan menampilkan semua
baris dari tabel kanan (kedua) meskipun tidak ada kecocokan pada tabel kiri
(pertama).
Contoh:
SELECT a.nama, b.gejala
FROM pasien a
RIGHT JOIN gejala b
ON b.id = a.id;
|-------|----------|
| nama | gejala |
|-------|----------|
| John | Demam |
| Jane | Pusing |
| Mike | Mual |
SELECT a.nama, b.gejala
FROM pasien a
RIGHT JOIN gejala b
ON b.id = a.id;
|-------|----------|
| nama | gejala |
|-------|----------|
| John | Demam |
| Jane | Pusing |
| Mike | Mual |
FULL OUTER JOIN
Full Outer join berfungsi sebagai pemetaan relasi
many-to-many (banyak ke banyak), yaitu dimana beberapa record tabel A yang sama
dengan satu record tabel B, dan beberapa record tabel B yang sama dengan satu
record tabel A. Operasi full join akan
menampilkan semua isi tabel sisi kiri, walaupun data di pasangan joinnya yang
disisi kanan nilainya null dan sebaliknya.
select
d.area_id, d.nama_area, d.luas_area, p.penduduk_id, p.nama_penduduk
from cpenduduk p
full join
carea d on p.area_id = d.area_id
from cpenduduk p
full join
carea d on p.area_id = d.area_id
Syntak : SELECT tabel1.*, tabel2.* FROM tabel1, tabel2
WHERE tabel1.PK=tabel2.FK;
mantab banget gan
BalasHapusSolder uap
Makasih gan
BalasHapus