Perbedaan INNER, CROSS, LEFT, RIGHT, dan FULL JOIN di SQL

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



tbl_propinsi
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
106bogor44jawa barat
102gresik11jawa timur
103kebumen22jawa tengah
104semarang22jawa tengah
101surabaya11jawa 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
101surabaya11jawa timur
102gresik11jawa timur
103kebumen22jawa tengah
104semarang22jawa tengah
105jogjakarta3NullNull
106bogor44jawa barat
107banten5NullNull

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


<<<<< SELAMAT MENCOBA & SEMOGA MEMBANTU >>>>>
Perbedaan INNER, CROSS, LEFT, RIGHT, dan FULL JOIN di SQL Perbedaan INNER, CROSS, LEFT, RIGHT, dan FULL JOIN di SQL Reviewed by yunanto on Kamis, November 27, 2014 Rating: 5

Tidak ada komentar :

Events

Diberdayakan oleh Blogger.