Part 11 table join
-
Upload
dennyyahya -
Category
Education
-
view
69 -
download
6
Transcript of Part 11 table join
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