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       | 
            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     | 

| Mike | Mual       | 
| 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       | 
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

Syntak :  SELECT tabel1.*, tabel2.* FROM tabel1, tabel2 WHERE tabel1.PK=tabel2.FK;

Komentar

Posting Komentar