Assalamu'alaikum wr wb
Pada artikel kali ini saya akan berbagi pengalaman tentang JOIN pada query SQL.
apa itu Query ??
tentunya kawan² sudah mengerti kan??
karena untuk membuat aplikasi dinamis kita membutuhkan Query untuk mengambil data pada tabel yang saling berhubungan.
Pada kesempatan ini saya memberikan contoh, misalnya saya mempunyai 2 tabel yg nantinya akan dihubungkan :
tbl_kota
id_kota
|
nama_kota
|
id_propinsi
|
101
| surabaya |
1
|
102
| gresik |
1
|
103
| kebumen |
2
|
104
| semarang |
2
|
105
| jogjakarta |
3
|
106
| bogor |
4
|
107
| banten |
5
|
id_prop
|
nama_prop
|
1
| jawa timur |
2
| jawa tengah |
4
| jawa barat |
7
| jakarta |
8
| sumatera utara |
Disini kita mendefinisikan bagaimana mencari data yg ada pada tabel tersebut yang bisa dihubungkan antara tabel "tbl_kota" & tabel "tbl_propinsi". pada tabel tersebut yang bisa di relasikan adalah field "id_propinsi" dari tbl_kota & field "id_prop" pada tbl_propinsi, berikut kita Query dengan cara INNER JOIN tabel :
SELECT *
FROM tbl_kota INNER JOIN tbl_propinsi
ON tbl_kota.id_propinsi = tbl_propinsi.id_prop
hasilnya :
id_kota
|
nama_kota
|
id_propinsi
|
id_prop
|
nama_prop
|
101
| surabaya |
1
|
1
| jawa timur |
102
| gresik |
1
|
1
| jawa timur |
103
| kebumen |
2
|
2
| jawa tengah |
104
| semarang |
2
|
2
| jawa tengah |
106
| bogor |
4
|
4
| jawa barat |
------------------------
Disini Kawan² akan lihat persamaan apabila saya gunakan Cross join :
SELECT
*
FROM
tbl_kota CROSS
JOIN
tbl_propinsi
ON
tbl_kota.id_propinsi = tbl_propinsi.id_prop
hasilnya :
id_kota
|
nama_kota
|
id_propinsi
|
id_prop
|
nama_prop
|
106 | bogor | 4 | 4 | jawa barat |
102 | gresik | 1 | 1 | jawa timur |
103 | kebumen | 2 | 2 | jawa tengah |
104 | semarang | 2 | 2 | jawa tengah |
101 | surabaya | 1 | 1 | jawa timur |
Sama saja bukan, hanya saja datanya tidak diurutkan menurut tbl_kota
--------------------------
Kita coba dengan LEFT JOIN :
SELECT
*
FROM
tbl_kota LEFT
JOIN
tbl_propinsi
ON
tbl_kota.id_propinsi = tbl_propinsi.id_prop
hasilnya :
id_kota
|
nama_kota
|
id_propinsi
|
id_prop
|
nama_prop
|
101 | surabaya | 1 | 1 | jawa timur |
102 | gresik | 1 | 1 | jawa timur |
103 | kebumen | 2 | 2 | jawa tengah |
104 | semarang | 2 | 2 | jawa tengah |
105 | jogjakarta | 3 | Null | Null |
106 | bogor | 4 | 4 | jawa barat |
107 | banten | 5 | Null | Null |
disini anda lihat bahwa data tbl_kota akan ditampilkan yg tidak berelasi tetap ditampilkan, dgn pertimbangan data yg di tbl_propinsi tidak ada maka bernilai NULL.
------------------------
Kita coba dengan RIGHT JOIN :
SELECT
*
FROM
tbl_kota RIGHT
JOIN
tbl_propinsi
ON
tbl_kota.id_propinsi = tbl_propinsi.id_prop
hasilnya :
id_kota
|
nama_kota
|
id_propinsi
|
id_prop
|
nama_prop
|
101
| surabaya |
1
|
1
| jawa timur |
102
| gresik |
1
|
1
| jawa timur |
103
| kebumen |
2
|
2
| jawa tengah |
104
| semarang |
2
|
2
| jawa tengah |
106
| bogor |
4
|
4
| jawa barat |
Null
| Null |
Null
|
7
| jakarta |
Null
| Null |
Null
|
8
| sumatera utara |
Hasil diatas kebalikan dari LEFT JOIN, bahwa data yg di tbl_kota tidak ada maka bernilai NULL.
-------------------------
Bagaimana jika kita menampilkan semua data??
Maka kita memakai Query FULL JOIN
SELECT
*
FROM
tbl_kota FULL
JOIN
tbl_propinsi
ON tbl_kota.id_propinsi = tbl_propinsi.id_prop
ORDER BY tbl_kota.id_kota
hasilnya :
id_kota
|
nama_kota
|
id_propinsi
|
id_prop
|
nama_prop
|
101
| surabaya |
1
|
1
| jawa timur |
102
| gresik |
1
|
1
| jawa timur |
103
| kebumen |
2
|
2
| jawa tengah |
104
| semarang |
2
|
2
| jawa tengah |
106
| bogor |
4
|
4
| jawa barat |
105
| jogjakarta |
3
|
Null
| Null |
107
| banten |
5
|
Null
| Null |
Null
| Null |
Null
|
7
| jakarta |
Null
| Null |
Null
|
8
| sumatera utara |
Semua data yg bisa direlasikan maupun tidak akan keluar semuanya.
Melihat perbedaan Query diatas, maka anda bisa menentukan sendiri Query mana yang ingin anda pakai.
Sekian dulu Artikel kali ini, & kalau ada waktu luang Insya Allah saya berbagi pengalaman lagi padamu Kawan..
Semoga bermanfaat.
Sumber : http://inspirasicode.blogspot.com/2012/07/perbedaan-inner-left-right-dan-full.html
Semoga bermanfaat.
Sumber : http://inspirasicode.blogspot.com/2012/07/perbedaan-inner-left-right-dan-full.html
Perbedaan INNER, CROSS, LEFT, RIGHT, dan FULL JOIN di SQL
Reviewed by Syawaluddin Amin, S.Kom
on
Januari 11, 2014
Rating:
Tidak ada komentar: