QUERY ANTAR TABEL JOIN JOIN Join merupakan sebuah operasi yang digunakan untuk mendapatkan data gabungan dari dua tabel atau lebih. Join menghubungkan antar beberapa table sehingga terbentuk satu set data yang baru. Klausa JOIN digunakan untuk menggabungkan baris dari dua atau lebih tabel, berdasarkan kolom terkait diantara mereka. Operasi ini digunakan dalam perintah SELECT dan biasanya digunakan untuk memperoleh data secara detail dari table-table yang saling terkait (memiliki relasi) JOIN Tabel Mahasiswa Tabel KRS Bagaimana Query untuk menampilkan NIM, NAMA, Kelas dan Nilai dari setiap siswa? Tabel Mahasiswa Tabel KRS Perhatikan bahwa kolom “NIM" di tabel “KRS" mengacu pada “NIM" di tabel “Mahasiswa". Dua tabel di atas dihubungkan oleh kolom “NIM". CROSS JOIN (CARTESIAN JOIN) Cross join menghasilkan output berupa kombinasi dari semua baris yang terdapat dalam tabel-tabel yang digabungkan baik yang berpasangan maupun yang tidak berpasangan. Pada kenyataannya join jenis ini jarang bahkan tidak pernah dipakai. Meskipun begitu, jenis join inilah yang merupakan dasar dari join antar tabel. CROSS JOIN (CARTESIAN JOIN) Cross join merupakan jenis join yang tidak memakai persyaratan, sementara jenis join lainnya memerlukan persyaratan. Persyaratan yang dimaksud adalah data pada kolom foreign key di tabel yang merujuk harus sama dengan data pada kolom primary key di tabel yang dirujuk. Cross join dapat dilakukan pada sembarang tabel, baik tabel yang saling berhubungan maupun tidak. Catatan: Kolom-kolom_foreign_key pada tabel_2 harus mereferensi ke kolom_primary_key pada tabel_1. INNER JOIN (INNER) JOIN : Mengembalikan rekaman yang memiliki nilai yang cocok di kedua tabel INNER JOIN Kata kunci INNER JOIN memilih record yang memiliki nilai yang cocok di kedua tabel. Inner join menghasilkan output berupa kombinasi baris-baris yang memiliki pasangan saja. Kombinasi baris yang tidak berpasangan akan dieliminasi atau tidak digunakan Baris – baris yang tidak memiliki pasangan pada tabel lainnya juga tidak dimunculkan INNER JOIN Sintaks INNER JOIN (Cara 1) SELECT tabel_1.kolom, tabel_2.kolom FROM tabel_1, tabel_2 WHERE tabel_1.kolom_kunci_1=tabel_2.kolom_kunci_2 INNER JOIN Sintaks INNER JOIN (Cara 2) SELECT tabel_1.kolom, tabel_2.kolom FROM tabel_1 INNER JOIN tabel_2 ON tabel_1.kolom_kunci_1 = tabel_2.kolom_kunci_2 INNER JOIN Untuk INNER JOIN terdapat 2 cara penulisan, yaitu: Cara pertama adalah dengan memisahkan daftar tabel yang akan dijoin dengan tanda koma dan melakukan pengecekan kondisi menggunakan WHERE. Cara kedua adalah menggunakan keyword INNER JOIN atau disingkat dengan JOIN saja di antara dua tabel yang akan di-join-kan dan melakukan pengecekan kondisi dengan keyword ON. Cara pertama lebih singkat dan akan lebih terasa jika yang di-joinkan lebih dari dua tabel. Hal ini terjadi karena keyword JOIN dan ON merupakan satu kesatuan yang hanya dapat diterapkan pada dua buah tabel saja. Untuk lebih dari dua tabel kita harus menuliskan JOIN dan ON berulang kali. CONTOH Menampilkan resep,nama pasien dan penyakit pasien. SELECT resep.kd_resep, pasien.nama, penyakit.penyakit FROM resep, pasien, penyakit WHERE resep.kd_pasien=pasien.kd_pasien AND resep.kd_penyakit=penyakit.kd_penyakit SELECT resep.kd_resep, pasien.nama, penyakit.penyakit FROM resep JOIN pasien ON resep.kd_pasien=pasien.kd_pasien JOIN penyakit ON resep.kd_penyakit=penyakit.kd_penyakit Walaupun penulisannya lebih panjang tapi bentuk yang kedua lebih dianjurkan karena membutuhkan memory yang lebih sedikit dan prosesnya lebih cepat. Hal ini akan terasa sekali jika melibatkan tabel-tabel dengan data yang banyak. Latihan Contoh : Tampilkan Nama Dosen dan Kode Matakuliah yang diampu! Sintaks : Menampilkan Nama Dosen dan Kode Matakuliah yang diampu Nama Dosen berada pada tabel DOSEN, sedangkan Kode Matakuliah berada pada tabel KELAS. Sehingga kita perlu melakukan Select dari tabel DOSEN dan KELAS dengan Atribut Kunci sebagai penghubung tabel DOSEN dan KELAS adalah atribut NIP. Menggabungkan 3 tabel SELECT table1.coloum_name, table2.coloum_name, table3.coloum_name FROM ((table1 INNER JOIN table 2 ON table1.coloum_name = table2.coloum_name) INNER JOIN table3 ON table2.coloum_name = table3.coloum_name); Latihan Contoh : Tampilkan Nama Dosen, Kelas dan matakuliah yang diampu! SELECT dosen.NAMA, kelas.IDKELAS, matakuliah.MATAKULIAH FROM ((dosen INNER JOIN kelas ON dosen.NIP = kelas.NIP) INNER JOIN matakuliah ON kelas.KODE = matakuliah.KODE); •LEFT (OUTER) JOIN : •Mengembalikan semua catatan dari tabel kiri, OUTER JOIN Outer join hampir sama dengan inner join, hanya saja baris yang tidak memiliki pasangan tetap akan ditampilkan. dan catatan yang cocok dari tabel kanan •RIGHT (OUTER) JOIN : •Mengembalikan semua record dari tabel kanan, dan record yang cocok dari tabel kiri •FULL (OUTER) JOIN : •Mengembalikan semua record ketika ada kecocokan di tabel kiri atau kanan Syntax SELECT tabel_1.kolom, tabel_2.kolom FROM tabel_1 [LEFT|RIGHT|FULL OUTER JOIN] tabel_2 ON tabel_1.kolom_kunci_1=tabel_2.kolom_kunci_2 LEFT JOIN Kata kunci LEFT JOIN mengembalikan semua record dari tabel kiri (table1), dan record yang cocok dari tabel kanan (table2). Data yang ada pada tabel sebalah kiri akan ditampilkan semua sesuai pasangannya, jika ada data yang tidak memiliki pasangan, pada tabel sebelah kanan akan diisikan NULL. LEFT JOIN LEFT JOIN Syntax Catatan: Dalam beberapa database LEFT JOIN disebut LEFT OUTER JOIN RIGHT JOIN Kata kunci RIGHT JOIN mengembalikan semua record dari tabel kanan (table2), dan record yang cocok dari tabel kiri (table1). Data yang ada pada tabel sebelah kanan akan ditampilkan semua sesuai pasangannya, jika ada data yang tidak memiliki pasangan, pada tabel sebelah kiri akan diisikan NULL. RIGHT JOIN Sintaks RIGHT JOIN Catatan: Dalam beberapa database, RIGHT JOIN disebut RIGHT OUTER JOIN. FULL JOIN Kata kunci FULL OUTER JOIN mengembalikan semua rekaman ketika ada kecocokan dalam catatan tabel kiri (tabel1) atau kanan (tabel2). Catatan: FULL OUTER JOIN berpotensi mengembalikan set hasil yang sangat besar! Tip: FULL OUTER JOIN dan FULL JOIN adalah sama. Semua data dari tabel – tabel yang di join ditampilkan, baik itu yang secara left outer join, right outer join maupun inner join. FULL JOIN FULL OUTER JOIN Syntax Contoh : Tampilkan Nama Dosen dan Kode Matakuliah yang diampu! SELECT tabel_1.kolom, tabel_2.kolom FROM tabel_1 [LEFT | RIGHT | FULL OUTER JOIN] tabel_2 ON tabel_1 . kolom_kunci_1 = tabel_2 . kolom_kunci_2 Menampilkan Nama Dosen dan Kode matakuliah dengan Left Join Menampilkan Nama Dosen dan Kode Matakuliah dengan Right Join Menampilkan Nama Dosen dan Kode Matakuliah dengan Full Join SOAL LATIHAN Tabel Ambil_Mk Tabel Mahasiswa Tabel Matakuliah 1. Tampilkan Nama Mahasiswa dan Kode Matakuliah yang diambilnya! 2. Tampilkan Nama Mahasiswa dan Nama Matakuliah yang diambilnya! 1. Tampilkan Nama Mahasiswa dan Kode Matakuliah yang diambilnya! 2. Tampilkan Nama Mahasiswa dan Nama Matakuliah yang diambilnya