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..
<<<<< SELAMAT MENCOBA & SEMOGA MEMBANTU >>>>>
Terima kasih. Dari kmarin saya bingung dgn join sql ini
BalasHapusPranala --> PERBEDAAN FUNGSI JOIN PADA MYSQL
HapusPranala --> PERBANDINGAN ALGORITMA QUERY JOIN - ON DENGAN WHERE PADA MYSQL
HapusGan tolong di posting yg bnyk ,artikel spt ini
BalasHapusinsya Allah
HapusTerima kasih, semoga berkah telah berbagi ilmu...
BalasHapusmakasih ya..artikelnya lengkap. salam blogger!
BalasHapusoke., sama²., smoga brmanfaat
Hapusterima kasih banyak
BalasHapuskeren banget.. lumayan buat belajar... share ilmu yang lebih banyak :D
BalasHapus(y), lg Bnyk Kesibukan, sudah lama off. hehe ^_^
Hapusmau nulis lagi yg lebih mudah dipahami oleh orang awam sekalipun.
Terimakasih, sangat membantu.
BalasHapusIya, sama2, semoga membantu
Hapuswah pembahasannya sangat mudah dimengerti, saya jadi paham tentang perbedaan inner, left dan right join, makasih kaka sharing ilmunya ^^
BalasHapusYupz, semoga bermanfaat
Hapusthanks
BalasHapusmas kalo gak pake INNER, CROSS, LEFT, RIGHT, dan FULL JOIN, sbenernya gimana??? soalnya q jarang gunain perintah tersebut, suwun mas
BalasHapushttp://sharedby-hilmirusdha.blogspot.co.id/
maksudnya mas?
Hapusjika ada dua tabel yg ber-relasi antara satu sama yg lain pastinya akan menggunakan salah satu fungsi join tersebut mas, jika langsung from 2 tabel pastinya akan keluar semua dan datanya akan dobel
bang itu di foreign key kan? kek mana biar datanya sukses sya error terus?
BalasHapusada contoh tablenya dan querynya?
Hapusmungkin bisa saya bantu
bisa bantu gan ..?? untuk pengulangan ID propinsi dan antara surabaya dan gersik itu kan id propinsi nya sama sama 1 yah.. nah bila sudah di insert di surabaya 1 maka di gersik tidak bisa mas.. knapa ya ?
BalasHapusBisa dikirimkan screenshotnya gan..
Hapuskemungkinan id_propinsi nya di table kota adalah primary key..
Simple dan jelas kak. Good
BalasHapus