Wednesday, Feb 08th

Last update:04:16:00 PM GMT

Headlines:
You are here: Programing Database SQL Inner Join, Left Outer Join, Right Outer Join?
Error
  • Error loading feed data.

SQL Inner Join, Left Outer Join, Right Outer Join?



E-mail Print PDF
User Rating: / 6
PoorBest 
TRANSLATE
SQL Inner Join, Left Outer Join, Right Outer Join?
SQL Inner Join, Left Outer Join, Right Outer Join?
sql-injection-database

Apa beda SQL Inner Join, Left Outer Join, Right Outer Join?

Mungkin kedengarannya lucu ya pertanyaan diatas(Hari gene
masih binun ttg SQL Join)? tp mmg kalo ga sering pake kita bisa lupa prinsip
tentang SQL join koq.Wajar...manusiawi:))
Selagi belum ada kerjaan yg di assign ke aq, sambil nunggu JIRA-nya diisi ama
mas paddy bisa belajar n review2 hehehe


Sekarang mari kita coba mengingat-ingat lagi pelajaran SQl ini :

disini qta buat dulu 2 tabel yaitu

- tabel area, dengan 3 buah field : area_id, nama_area, luas_area

- tabel penduduk, dengan field 3 buah field : penduduk_id, nama_penduduk,
area_id

kedua tabel diatas diilustrasikan dengan beberapa data sebagai berikut :


TABEL AREA

=====================================================

Area_ID || Nama_Area || Luas_Area

=====================================================

ARS01 Surabaya 1000

ARJ01 Jakarta 2000

ARY09 Yogya 4000

ARS02 Solo 3000

ARK01 Kediri null







TABEL PENDUDUK

=====================================================

Penduduk_ID || Nama_Penduduk || Area_ID

=====================================================

PDS01 Susanna ARS01

PDJ01 Jocki Hendry null

PDA01 Asrina Febyanti ARJ01

PDA02 Abi Anwari ARY01





I. Inner Join / Join :

Operasi Join tipe ini akan hanya menampilkan tabel sisi kiri yang datanya sama
dengan data di pasangan joinnya yg disisi kanan.



dengan script sql berikut :



select d.Area_id, d.nama_area, d.luas_area, p.penduduk_id, p.nama_penduduk 
from area d
inner join penduduk p on (d.area_id=p.area_id);




script diatas ekivalen dengan script dibawah ini :



select d.Area_id, d.nama_area, d.luas_area, p.penduduk_id, p.nama_penduduk 
from penduduk p
inner join area d on (d.area_id=p.area_id);




akan menghasilkan :



AREA_ID NAMA_AREA LUAS_AREA PENDUDUK_ID NAMA_PENDUDUK

------- -------------------- ---------------------- -----------
--------------------

ARS01 Surabaya 1000 PDS01 Susanna

ARJ01 Jakarta 2000 PDA01 Asrina Febyanti



2 rows selected





II. Left Outer Join / Left Join :

Operasi Join tipe ini akan menampilkan semua isi tabel sisi kiri, walaupun data
di pasangan joinnya yg disisi kanan nilainya tidak sama ataupun bernilai null.





dengan script sql berikut (Note => tabel sisi kiri : area; tabel sisi kanan
: penduduk) :



select d.Area_id, d.nama_area, d.luas_area, p.penduduk_id, p.nama_penduduk
from area d

left outer join penduduk p on (d.area_id=p.area_id);




akan menghasilkan :



AREA_ID NAMA_AREA LUAS_AREA PENDUDUK_ID NAMA_PENDUDUK

------- -------------------- ---------------------- -----------
--------------------

ARS01 Surabaya 1000 PDS01 Susanna

ARJ01 Jakarta 2000 PDA01 Asrina Febyanti

ARY09 Yogya 4000

ARS02 Solo 3000

ARK01 Kediri



5 rows selected



dengan script sql berikut (Note => tabel sisi kiri : penduduk; tabel sisi
kanan : area) :



select d.Area_id, d.nama_area, d.luas_area, p.penduduk_id, p.nama_penduduk from
penduduk p

left outer join area d on (d.area_id=p.area_id);



akan menghasilkan :



AREA_ID NAMA_AREA LUAS_AREA PENDUDUK_ID NAMA_PENDUDUK

------- -------------------- ---------------------- -----------
--------------------

ARS01 Surabaya 1000 PDS01 Susanna

PDJ01 Jocki Henry

ARJ01 Jakarta 2000 PDA01 Asrina Febyanti

PDA02 Abi Anwari



4 rows selected





III. Right Outer Join / Right Join :

Operasi Join tipe ini akan menampilkan semua isi tabel sisi Kanan, walaupun
data di pasangan joinnya yg disisi kiri nilainya tidak sama ataupun bernilai
null.



dengan script sql berikut (Note => tabel sisi kiri : area; tabel sisi kanan
: penduduk) :



select d.Area_id, d.nama_area, d.luas_area, p.penduduk_id, p.nama_penduduk from
area d

Right outer join penduduk p on (d.area_id=p.area_id);



akan menghasilkan :



AREA_ID NAMA_AREA LUAS_AREA PENDUDUK_ID NAMA_PENDUDUK

------- -------------------- ---------------------- -----------
--------------------

ARS01 Surabaya 1000 PDS01 Susanna

PDJ01 Jocki Henry

ARJ01 Jakarta 2000 PDA01 Asrina Febyanti

PDA02 Abi Anwari



4 rows selected





dengan script sql berikut (Note => tabel sisi kiri : penduduk; tabel sisi
kanan : area) :



select d.Area_id, d.nama_area, d.luas_area, p.penduduk_id, p.nama_penduduk from
penduduk p

Right outer join area d on (d.area_id=p.area_id);



akan menghasilkan :



AREA_ID NAMA_AREA LUAS_AREA PENDUDUK_ID NAMA_PENDUDUK

------- -------------------- ---------------------- -----------
--------------------

ARS01 Surabaya 1000 PDS01 Susanna

ARJ01 Jakarta 2000 PDA01 Asrina Febyanti

ARY09 Yogya 4000

ARS02 Solo 3000

ARK01 Kediri



5 rows selected





IV. Cross Join :

Operasi Join tipe ini akan menampilkan semua isi tabel sisi Kiri akan memiliki
pasangan semua data disisi kanan.

Banyaknya Record Cross Join = jumlah record tabel pertama x jumlah record tabel
kedua



dengan script sql berikut :



select d.Area_id, d.nama_area, d.luas_area, p.penduduk_id, p.nama_penduduk from
area d

cross JOIN penduduk p



akan menghasilkan :



AREA_ID NAMA_AREA LUAS_AREA PENDUDUK_ID NAMA_PENDUDUK

------- -------------------- ---------------------- -----------
--------------------

ARS01 Surabaya 1000 PDS01 Susanna

ARJ01 Jakarta 2000 PDS01 Susanna

ARS02 Solo 3000 PDS01 Susanna

ARY09 Yogya 4000 PDS01 Susanna

ARK01 Kediri PDS01 Susanna

ARS01 Surabaya 1000 PDJ01 Jocki Henry

ARJ01 Jakarta 2000 PDJ01 Jocki Henry

ARS02 Solo 3000 PDJ01 Jocki Henry

ARY09 Yogya 4000 PDJ01 Jocki Henry

ARK01 Kediri PDJ01 Jocki Henry

ARS01 Surabaya 1000 PDA01 Asrina Febyanti

ARJ01 Jakarta 2000 PDA01 Asrina Febyanti

ARS02 Solo 3000 PDA01 Asrina Febyanti

ARY09 Yogya 4000 PDA01 Asrina Febyanti

ARK01 Kediri PDA01 Asrina Febyanti

ARS01 Surabaya 1000 PDA02 Abi Anwari

ARJ01 Jakarta 2000 PDA02 Abi Anwari

ARS02 Solo 3000 PDA02 Abi Anwari

ARY09 Yogya 4000 PDA02 Abi Anwari

ARK01 Kediri PDA02 Abi Anwari



20 rows selected





script diatas ekivalen dengan script dibawah ini :



select * from area d, penduduk p;





V. Full Outer Join / Full Join :

Operasi Join tipe ini akan menampilkan semua isi tabel sisi kiri, walaupun data
di pasangan joinnya yg disisi kanan nilainya null.dan sebaliknya.



dengan script sql berikut :



select d.Area_id, d.nama_area, d.luas_area, p.penduduk_id, p.nama_penduduk from
area d

full join penduduk p on (d.area_id=p.area_id);



akan menghasilkan :



AREA_ID NAMA_AREA LUAS_AREA PENDUDUK_ID NAMA_PENDUDUK

------- -------------------- ---------------------- -----------
--------------------

ARS01 Surabaya 1000 PDS01 Susanna

ARJ01 Jakarta 2000 PDA01 Asrina Febyanti

ARY09 Yogya 4000

ARS02 Solo 3000

ARK01 Kediri

PDJ01 Jocki Henry

PDA02 Abi Anwari



7 rows selected



dengan script sql berikut :



select d.Area_id, d.nama_area, d.luas_area, p.penduduk_id, p.nama_penduduk from
penduduk p

full join area d on (d.area_id=p.area_id);



akan menghasilkan :



AREA_ID NAMA_AREA LUAS_AREA PENDUDUK_ID NAMA_PENDUDUK

------- -------------------- ---------------------- -----------
--------------------

ARS01 Surabaya 1000 PDS01 Susanna

PDJ01 Jocki Henry

ARJ01 Jakarta 2000 PDA01 Asrina Febyanti

PDA02 Abi Anwari

ARY09 Yogya 4000

ARS02 Solo 3000

ARK01 Kediri



7 rows selected







VI. Lain-lain

Kadang ada yang terbiasa/lebih suka dengan menggunakan left outer join untuk
menghasilkan data seperti yang dihasilkan perintah di inner join. bisa juga
sich. caranya filter data sisi kanan yang bernilai null.



dengan script sql berikut :



select d.Area_id, d.nama_area, d.luas_area, p.penduduk_id, p.nama_penduduk from
area d

left outer join penduduk p on (d.area_id=p.area_id)

where p.area_id is not null;



akan menghasilkan :



AREA_ID NAMA_AREA LUAS_AREA PENDUDUK_ID NAMA_PENDUDUK

------- -------------------- ---------------------- -----------
--------------------

ARS01 Surabaya 1000 PDS01 Susanna

ARJ01 Jakarta 2000 PDA01 Asrina Febyanti



2 rows selected



atau ada yang suka pake right outer join juga bisa lho.



scriptnya sebagai berikut



select d.Area_id, d.nama_area, d.luas_area, p.penduduk_id, p.nama_penduduk from
area d

Right outer join penduduk p on (d.area_id=p.area_id)

where d.area_id is not null;



akan menghasilkan :



AREA_ID NAMA_AREA LUAS_AREA PENDUDUK_ID NAMA_PENDUDUK

------- -------------------- ---------------------- -----------
--------------------

ARS01 Surabaya 1000 PDS01 Susanna

ARJ01 Jakarta 2000 PDA01 Asrina Febyanti



2 rows selected


Diposting oleh visiau


 


Source:
http://visiau.blogspot.com/2008/10/apa-beda-sql-inner-join-left-outer-join.html






NEW SONG duduL Radio

 

TOP SONGS duduL Radio

 

Now on duduL Radio

 
Share/Save/Bookmark