Part 11 table join

18
Table Join Table Join www.rahmadani.net 1 Pertemuan Ke-11

Transcript of Part 11 table join

Table JoinTable Join

www.rahmadani.net 1

Pertemuan Ke-11

Maksudnya..Join merupakan operasi yang digunakanuntuk mendapatkan data gabungan dari duatabel atau lebih.

Operasi ini juga menggunakan perintahSELECT dan biasanya dipakai untukmemperoleh detail data dari tabel-tabel yangsaling terkait( terelasi)

www.rahmadani.net 2

Join merupakan operasi yang digunakanuntuk mendapatkan data gabungan dari duatabel atau lebih.

Operasi ini juga menggunakan perintahSELECT dan biasanya dipakai untukmemperoleh detail data dari tabel-tabel yangsaling terkait( terelasi)

Syntax:Select nama_kolom,nama_kolom,[nama_kolom] Fromnama_tabel,[Cross/Inner/[Left/Right]Outer]Joinnama_tabel On nama_tabel.Ref_nama_kolom OperatorJoinNama_tabel.Ref_nama_kolom.

Keterangan :Nama_kolom : menspesifikasikan nama kolom dari satu ataubeberapa tabel yang ditampilkan.

Nama_tabel : adalah nama tabel dari tabel yang diambil

Ref.nama_kolom : adalah nama_kolom yang digunakanmenggabungkan dua tabel dengan menggunakan kunci yang umum.Operator Join menspesifikasikan operator yang digunakan untukmenggabungkan tabel.

www.rahmadani.net 3

Select nama_kolom,nama_kolom,[nama_kolom] Fromnama_tabel,[Cross/Inner/[Left/Right]Outer]Joinnama_tabel On nama_tabel.Ref_nama_kolom OperatorJoinNama_tabel.Ref_nama_kolom.

Keterangan :Nama_kolom : menspesifikasikan nama kolom dari satu ataubeberapa tabel yang ditampilkan.

Nama_tabel : adalah nama tabel dari tabel yang diambil

Ref.nama_kolom : adalah nama_kolom yang digunakanmenggabungkan dua tabel dengan menggunakan kunci yang umum.Operator Join menspesifikasikan operator yang digunakan untukmenggabungkan tabel.

1. Cross Join/Cartesian JoinCross Join akan menghasilkan kombinasi semua barisyang terdapat dalam tabel-tabel yang digabungkan baikyang tidak berpasangan maupun yang berpasangan.Contoh;Pada Dbase MYAKADEMIK, tuliskan kode berikut:SELECT Mahasiswa.nama, Mata_Kuliah.Nama_MK FROM MahasiswaCROSS JOIN Mata_KuliahAtauSELECT Mahasiswa.nama, Mata_Kuliah.Nama_MK FROM Mahasiswa,Mata_KuliahAtauSELECT A.NIM, A.Nama,B.Nama_MK, C.Nilai FROM Mahasiswa A,Mata_Kuliah B, KHS CSimpulan:Pada kenyataannya, join jenis ini jarang berguna dan dapatmenimbulkan proses yang sangat lama sekiranya masing-masing tabelmengandung jumlah data yang besar. Meskipun begitu jenis joininilah yang merupakan dasar dari join antar tabel.

www.rahmadani.net 4

Cross Join akan menghasilkan kombinasi semua barisyang terdapat dalam tabel-tabel yang digabungkan baikyang tidak berpasangan maupun yang berpasangan.Contoh;Pada Dbase MYAKADEMIK, tuliskan kode berikut:SELECT Mahasiswa.nama, Mata_Kuliah.Nama_MK FROM MahasiswaCROSS JOIN Mata_KuliahAtauSELECT Mahasiswa.nama, Mata_Kuliah.Nama_MK FROM Mahasiswa,Mata_KuliahAtauSELECT A.NIM, A.Nama,B.Nama_MK, C.Nilai FROM Mahasiswa A,Mata_Kuliah B, KHS CSimpulan:Pada kenyataannya, join jenis ini jarang berguna dan dapatmenimbulkan proses yang sangat lama sekiranya masing-masing tabelmengandung jumlah data yang besar. Meskipun begitu jenis joininilah yang merupakan dasar dari join antar tabel.

2. Inner JoinJoin ini akan menghasilkan output yang berupa kombinasibaris-baris yang memiliki pasangan apa saja. Kombinasibaris yang bukan pasangan akan dieliminasi dan baris-baris yang tidak memiliki pasangan pada tabel lainnya tidakakan dimunculkan.

Dalam Inner Join, perlu diperhatikan ketika akan menjoinkan beberapatabel;1.Tentukan kolom-kolom yang akan ditampilkan2.Kelompokkan kolom tersebut berdasarkan tabel3.Tentukan kolom yang sama (saling mereferensi) dari tabel-tabel yangakan di joinkan.4.Kolom yang sama tersebut menjadi kondisi join dari tabel yang dipilih.5.Mengaliaskan nama tabel6.Bila diperlukan tentukan kondisi atau syarat yang harus ada.

www.rahmadani.net 5

Join ini akan menghasilkan output yang berupa kombinasibaris-baris yang memiliki pasangan apa saja. Kombinasibaris yang bukan pasangan akan dieliminasi dan baris-baris yang tidak memiliki pasangan pada tabel lainnya tidakakan dimunculkan.

Dalam Inner Join, perlu diperhatikan ketika akan menjoinkan beberapatabel;1.Tentukan kolom-kolom yang akan ditampilkan2.Kelompokkan kolom tersebut berdasarkan tabel3.Tentukan kolom yang sama (saling mereferensi) dari tabel-tabel yangakan di joinkan.4.Kolom yang sama tersebut menjadi kondisi join dari tabel yang dipilih.5.Mengaliaskan nama tabel6.Bila diperlukan tentukan kondisi atau syarat yang harus ada.

Contoh;Pada Dbase MYAKADEMIK, joinkan antara tabelKHS dengan Mata_Kuliah;

SELECT*FROM KHS, Mata_Kuliah WHEREKHS.Kode_MK=Mata_Kuliah.Kode_MK (syle lama)Atau

SELECT*FROM KHS inner join Mata_Kuliah onKHS.Kode_MK=Mata_Kuliah.Kode_MK (syle baru)AtauSELECT*FROM KHS join Mata_Kuliah onKHS.Kode_MK=Mata_Kuliah.Kode_MK

www.rahmadani.net 6

Pada Dbase MYAKADEMIK, joinkan antara tabelKHS dengan Mata_Kuliah;

SELECT*FROM KHS, Mata_Kuliah WHEREKHS.Kode_MK=Mata_Kuliah.Kode_MK (syle lama)Atau

SELECT*FROM KHS inner join Mata_Kuliah onKHS.Kode_MK=Mata_Kuliah.Kode_MK (syle baru)AtauSELECT*FROM KHS join Mata_Kuliah onKHS.Kode_MK=Mata_Kuliah.Kode_MK

Simpulan..Untuk INNER JOIN terdapat dua cara penulisan;1. Memisahkan daftar tabel yang akan di-join dengan

tanda koma dan melakukan pengecekan kondisidengan klausa WHERE.

2. Menggunakan keyword INNER JOIN atau boleh jugadisingkat dengan JOIN saja diantara dua tabel yangakan di-join dan melakukan pengecekan kondisidengan Keyword ON.

Kedua cara diatas hanya berlaku untuk dua tabel saja.Jadi bagaimana jika tabel yang mau di JOIN kan lebihdari dua tabel??

www.rahmadani.net 7

Untuk INNER JOIN terdapat dua cara penulisan;1. Memisahkan daftar tabel yang akan di-join dengan

tanda koma dan melakukan pengecekan kondisidengan klausa WHERE.

2. Menggunakan keyword INNER JOIN atau boleh jugadisingkat dengan JOIN saja diantara dua tabel yangakan di-join dan melakukan pengecekan kondisidengan Keyword ON.

Kedua cara diatas hanya berlaku untuk dua tabel saja.Jadi bagaimana jika tabel yang mau di JOIN kan lebihdari dua tabel??

Perhatikan contoh berikut, kita akan men joinkan TabelMahasiswa, Mata_Kuliah dan KHS;Cara 1:SELECT A. NIM, A.Nama, B.Nama_MK, B.Bobot, C.Semester,C.Nilai, C.Tahun_Ajaran FROM Mahasiswa A INNER JOIN KHS CON A.Nim=C.NIm INNER JOIN Mata_Kuliah B ONB.Kode_MK=C.Kode_MKCara 2:SELECT A. NIM, A.Nama, B.Nama_MK, B.Bobot, C.Semester,C.Nilai, C.Tahun_Ajaran FROM Mahasiswa A, Mata_Kuliah B,KHS C WHERE A.Nim=C.NIm AND B.Kode_MK=C.Kode_MKResult:

www.rahmadani.net 8

Perhatikan contoh berikut, kita akan men joinkan TabelMahasiswa, Mata_Kuliah dan KHS;Cara 1:SELECT A. NIM, A.Nama, B.Nama_MK, B.Bobot, C.Semester,C.Nilai, C.Tahun_Ajaran FROM Mahasiswa A INNER JOIN KHS CON A.Nim=C.NIm INNER JOIN Mata_Kuliah B ONB.Kode_MK=C.Kode_MKCara 2:SELECT A. NIM, A.Nama, B.Nama_MK, B.Bobot, C.Semester,C.Nilai, C.Tahun_Ajaran FROM Mahasiswa A, Mata_Kuliah B,KHS C WHERE A.Nim=C.NIm AND B.Kode_MK=C.Kode_MKResult:

Jadi, apa kesimpulannya jika tabel yang akan di-join kan lebih dari dua??

3.Outer JoinPemahaman Outer Join sebenarnya hampir samadengan Inner Join hanya saja baris yang tidakmemiliki pasangan tetap akan ditampilkan.

Outer Join, dibagi menjadi beberapa bagian:1.Left Outer Join2.Right Outer Join3.Full Outer Join

www.rahmadani.net 9

Pemahaman Outer Join sebenarnya hampir samadengan Inner Join hanya saja baris yang tidakmemiliki pasangan tetap akan ditampilkan.

Outer Join, dibagi menjadi beberapa bagian:1.Left Outer Join2.Right Outer Join3.Full Outer Join

Agar lebih memahami tentang Outer Joinperhatikan contoh berikut:

Cross joinSELECT M.NIM, M.Nama, K.Kode_MK, K.Nilai FROMMahasiswa M Cross Join KHS KAtauSELECT M.NIM, M.Nama, K.Kode_MK, K.Nilai FROMMahasiswa M,KHS K

Inner JoinSELECT M.NIM, M.Nama, K.Kode_MK, K.Nilai FROMMahasiswa M Inner JOIN KHS K on m.nim=k.nim

Outer JoinSELECT M.NIM, M.Nama, K.Kode_MK, K.Nilai FROMMahasiswa M LEFT JOIN KHS K on m.nim=k.nim

www.rahmadani.net 10

Cross joinSELECT M.NIM, M.Nama, K.Kode_MK, K.Nilai FROMMahasiswa M Cross Join KHS KAtauSELECT M.NIM, M.Nama, K.Kode_MK, K.Nilai FROMMahasiswa M,KHS K

Inner JoinSELECT M.NIM, M.Nama, K.Kode_MK, K.Nilai FROMMahasiswa M Inner JOIN KHS K on m.nim=k.nim

Outer JoinSELECT M.NIM, M.Nama, K.Kode_MK, K.Nilai FROMMahasiswa M LEFT JOIN KHS K on m.nim=k.nim

Simpulan..Secara sederhana dapat dikatakan bahwa perbedaan antaraCross Join dengan Jenis Join lainnya adalah ada dan tidaknyapersyaratan atau pengecekan kondisi Join.

Cross Join merupakan yang tidak memiliki persyaratan,sementara jenis join lainnya (INNER atau OUTER)memerlukan persyaratan. Persyaratan yang dimaksud adalahbahwa data pada kolom foreign key di tabel yang merujukharus sama dengan data pada kolom primary key di tabelyang dirujuk.Persyaratan Kondisi ;Tabel_1.Kolom_Primary_Key=Tabel_2.Kolom_Foreign_KeyAtau sebaliknya.

www.rahmadani.net 11

Secara sederhana dapat dikatakan bahwa perbedaan antaraCross Join dengan Jenis Join lainnya adalah ada dan tidaknyapersyaratan atau pengecekan kondisi Join.

Cross Join merupakan yang tidak memiliki persyaratan,sementara jenis join lainnya (INNER atau OUTER)memerlukan persyaratan. Persyaratan yang dimaksud adalahbahwa data pada kolom foreign key di tabel yang merujukharus sama dengan data pada kolom primary key di tabelyang dirujuk.Persyaratan Kondisi ;Tabel_1.Kolom_Primary_Key=Tabel_2.Kolom_Foreign_KeyAtau sebaliknya.

Right Outer JoinBaris pada tabel yg berada disebelah kanan operator RightOuter Join ada yang tidak memiliki pasangan dengan tabelyang terletak di kanan right outer join atau right join, barisini tetap disertakan dalam penggabungan.Contoh:SELECT M.NIm, M.Nama, K.Kelas,K.Kode_Jurusan as JUrusan FROm Mahasiswa mRight Outer Join Kelas K on M.kelas=K.Kelas

Hal yang sama juga berlaku pada Left Outer Join

www.rahmadani.net 12

Baris pada tabel yg berada disebelah kanan operator RightOuter Join ada yang tidak memiliki pasangan dengan tabelyang terletak di kanan right outer join atau right join, barisini tetap disertakan dalam penggabungan.Contoh:SELECT M.NIm, M.Nama, K.Kelas,K.Kode_Jurusan as JUrusan FROm Mahasiswa mRight Outer Join Kelas K on M.kelas=K.Kelas

Hal yang sama juga berlaku pada Left Outer Join

Full Outer Join

Full Outer Join adalah gabungan antara model LeftOuter Join dan Right Outer Join.Contoh;SELECT K.Dosen_Wali, J.Ketua FROM Kelas KFULL OUTER JOIN Jurusan J ONK.Dosen_Wali=J.KetuaResult

www.rahmadani.net 13

Full Outer Join adalah gabungan antara model LeftOuter Join dan Right Outer Join.Contoh;SELECT K.Dosen_Wali, J.Ketua FROM Kelas KFULL OUTER JOIN Jurusan J ONK.Dosen_Wali=J.KetuaResult

Simpulan..

Agak berbeda dengan JOIN lainnya (INNER JOINatau CROSS JOIN), cara penulisan OUTER JOINhanya bisa dilakukan dengan satu cara.

Walaupun demikian, Anda dapat menyingkatdengan menghilangkan Keyword Outer, sehinggapenulisan, misal; Left Outer Join dapat disingkatmenjadi Left Join dan seterusnya.

www.rahmadani.net 14

Agak berbeda dengan JOIN lainnya (INNER JOINatau CROSS JOIN), cara penulisan OUTER JOINhanya bisa dilakukan dengan satu cara.

Walaupun demikian, Anda dapat menyingkatdengan menghilangkan Keyword Outer, sehinggapenulisan, misal; Left Outer Join dapat disingkatmenjadi Left Join dan seterusnya.

Latihan;1. Pada Database MYAKADEMIKS, gabungkan atau joinkan dengan

Inner Join Tabel KHS dengan Mata_Kuliah??SELECT*FROM (Tabel1) JOIN (Tabel2) onTabel1.FieldTable2=Table2.FieldTable2

2. Gabungkan Field NIM, Nama_MK, Bobot, Nilai dan tambahkan FieldNilai Angka kemudian di konversi nilai huruf KHS menjadi nilaiAngka??

SELECT K.NIM, M.Nama_MK, M.Bobot, K.Nilai,CASEWHEN Nilai='A' THEN 4WHEN Nilai='B' THEN 3WHEN Nilai='C' THEN 2WHEN Nilai='D' THEN 1ELSE 0END AS Nilai_Angka From KHS K JOIN Mata_Kuliah M on

K.Kode_MK=M.Kode_MKDari kode diatas..hitung field Nilai Angka dengan mengalikan setiap

kondisi dengan Bobot??www.rahmadani.net 15

1. Pada Database MYAKADEMIKS, gabungkan atau joinkan denganInner Join Tabel KHS dengan Mata_Kuliah??SELECT*FROM (Tabel1) JOIN (Tabel2) onTabel1.FieldTable2=Table2.FieldTable2

2. Gabungkan Field NIM, Nama_MK, Bobot, Nilai dan tambahkan FieldNilai Angka kemudian di konversi nilai huruf KHS menjadi nilaiAngka??

SELECT K.NIM, M.Nama_MK, M.Bobot, K.Nilai,CASEWHEN Nilai='A' THEN 4WHEN Nilai='B' THEN 3WHEN Nilai='C' THEN 2WHEN Nilai='D' THEN 1ELSE 0END AS Nilai_Angka From KHS K JOIN Mata_Kuliah M on

K.Kode_MK=M.Kode_MKDari kode diatas..hitung field Nilai Angka dengan mengalikan setiap

kondisi dengan Bobot??

3. Kemudian tampilkan NIM dan Mahasiswa yangdatanya berada pada dua tabel tersebut??

• Data yg ingin diketahui dari kedua tabel tersebut Mhasiswa danKHS;

SELECT Mahasiswa.NIM, Mahasiswa.Nama FROM MahasiswaInner Join KHS ON Mahasiswa.NIM=KHS.NIM

• Bisa pake grouping agar yg nampil diwakili 1SELECT Mahasiswa.NIM, Mahasiswa.Nama FROM MahasiswaInner Join KHS ON Mahasiswa.NIM=KHS.NIM group byMahasiswa.NIM, Mahasiswa.Nama

www.rahmadani.net 16

• Data yg ingin diketahui dari kedua tabel tersebut Mhasiswa danKHS;

SELECT Mahasiswa.NIM, Mahasiswa.Nama FROM MahasiswaInner Join KHS ON Mahasiswa.NIM=KHS.NIM

• Bisa pake grouping agar yg nampil diwakili 1SELECT Mahasiswa.NIM, Mahasiswa.Nama FROM MahasiswaInner Join KHS ON Mahasiswa.NIM=KHS.NIM group byMahasiswa.NIM, Mahasiswa.Nama

4. Tampilkan NIM, Nama mahasiswa serta tambahkan field IPK danperhitungannya dengan menjoinkan Tabel Mahasiswa, Mata_Kuliah danKHS dan gunakan klausa GROUP BY untuk menampilkan Field dan Tabelyang dijoinkan??

SELECT KHS.NIM, Mahasiswa.Nama, (SUM(CASEWHEN KHS.NIlai='A' THEN 4*Mata_Kuliah.BobotWHEN KHS.NIlai='B' THEN 3*Mata_Kuliah.BobotWHEN KHS.NIlai='C' THEN 2*Mata_Kuliah.BobotWHEN KHS.NIlai='D' THEN 1*Mata_Kuliah.BobotELSE 0END)/SUM(Mata_Kuliah.Bobot)) AS IPK FROM KHS INNER JOIN

Mata_KuliahON KHS.Kode_MK=Mata_Kuliah.Kode_MK INNER JOIN Mahasiswa ON

KHS.NIM=Mahasiswa.NIMGROUP BY KHS.NIM, Mahasiswa.Nama

www.rahmadani.net 17

SELECT KHS.NIM, Mahasiswa.Nama, (SUM(CASEWHEN KHS.NIlai='A' THEN 4*Mata_Kuliah.BobotWHEN KHS.NIlai='B' THEN 3*Mata_Kuliah.BobotWHEN KHS.NIlai='C' THEN 2*Mata_Kuliah.BobotWHEN KHS.NIlai='D' THEN 1*Mata_Kuliah.BobotELSE 0END)/SUM(Mata_Kuliah.Bobot)) AS IPK FROM KHS INNER JOIN

Mata_KuliahON KHS.Kode_MK=Mata_Kuliah.Kode_MK INNER JOIN Mahasiswa ON

KHS.NIM=Mahasiswa.NIMGROUP BY KHS.NIM, Mahasiswa.Nama

www.rahmadani.net 18