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
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.
Source : http://inspirasicode.blogspot.com/2012/07/perbedaan-inner-left-right-dan-full.html

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s