Tujuan Indikator Pencapaian Kompetensi Uraian Materi

76 kolom DEPARTMENT_ID di kedua tabel harus sama. Dalam beberapa kasus, join ini melibatkan primary key dan foreign key, Equijoin juga disebut simple join atau inner join. Gambar 4. 4 Klausa USING untuk Equijoin Menggunakan Tabel Alias Kualifikasi nama kolom dengan nama tabel dapat memakan waktu dalam eksekusinya, terutama jika nama tabe yang panjang. Pengguna dapat menggunakan tabel alias sebagai ganti nama tabel. Sama seperti kolom alias yang memberikan nama kolom dengan nama yang lain, tabel alias memberikan tabel dengan nama tabel yang lain. Penggunaan tabel alias dapat membantu memperkecil kode SQL, karena penggunaan lokasi memori yang lebih sedikit. Perhatikan bagaimana tabel alias diidentifikasi dalam klausa FROM dalam contoh. Nama tabel ditentukan secara penuh, diikuti dengan spasi dan kemudian tabel alias. Tabe lEMPLOYEES telah diberikan aliase, dan tabel DEPARTMENTS diberikan alias d. Gambar 4. 5 Query Penggunaan Tabel Alias 77 Klusa ON Pada dasarnya kondisi join yang digunakan pada Natural Join adalah Equijoin dengan menggunakan kolom yang namanya sama. Dengan klausa ON pengguna dimungkinkn untuk melakukan join pada dua tabel walaupun pada kedua tabel tersebut tidak memiliki kolom yang namanya sama untuk dijadikan sebagai kondisi join, tetapi data pada data pada kolom-kolom tersebut memiliki data yang sama sehingga dimungkinkan untuk dilakukan join. Gambar 4. 6 Klausa ON pada Query Self Join Kadang-kadang pengguna harus mengabungkan tabel untuk dirinya sendiri. Untuk menemukan nama manajer setiap karyawan, pengguna perlu menggabung tabel EMPLOYEES untuk dirinya sendiri, atau melakukan gabungan diri. Sebagai contoh, untuk menemukan nama manajer Lorentz, pengguna perlu: a. Mencari Lorentz dalam tabel EMPLOYEES dengan melihat kolom LAST_NAME. b. Mencari manajer ID untuk Lorentz dengan melihat kolom MANAGER_ID. Manajer ID Lorentz adalah 103. c. Mencari nama manajer yang memiliki EMPLOYEE_ID103 dengan melihat kolom LAST_NAME. EMPLOYEE_ID Hunold adalah 103, jadi Hunold adalah manajer Lorentz. 78 Pada Gambar 4.7, terlihat tabel yang sama sebanyak 2 kali. Pertama, terlihat tabel untuk menemukan Lorentz di kolom LAST_NAME dan nilai MANAGER_ID yaitu 103. Kedua ,terlihat di kolom EMPLOYEE_ID untuk menemukan 103 dan kolom LAST_NAME untuk menemukan Hunold. Gambar 4. 7 Contoh Self Join pada Query Klausa ON juga dapat digunakan untuk menggabung kolom yang memiliki nama yang berbeda, dalam tabel yang sama atau di tabel yang berbeda. Contoh yang ditampilkan adalah self join dari tabel EMPLOYEES, berdasar pada kolom EMPLOYEE_ID dan MANAGER_ID. Gambar 4. 8 Klausa ON dengan Kombinasi SELF JOIN 79 Kondisi Tambahan untuk JOIN Pengguna dapat menerapkan kondisi tambahan untuk Join. Contoh pada Gambar 4.9, ditampilkan perlakuan join pada tabel EMPLOYEES dan tabel DEPARTEMENTS dan hanya menampilkan karyawan yang memiliki manajer ID 149. Untuk menambahkan kondisi tambahan untuk klausa ON, Pengguna dapat menambahkan AND, atau dapat juga menggunakan klausa WHERE untuk menerapkan kondisi tambahan sebagai alternatif : SELECT e.employee_id, e.last_name, e.department_id, d.department_id, d.location_id FROM employees e JOIN departments d ON e.department_id = d.department_id WHERE e.manager_id = 149; Gambar 4. 9 KlausaJOIN pada Query Non-Equijoins Sebuah non-Equijoin adalah kondisi bergabung yang menggunakan operator selain operator sama dngan =. Hubungan antara tabel EMPLOYEES dan tabel JOB_GRADES adalah contoh dari non-Equijoin. Hubungan antara dua tabel adalah bahwa kolom SALARY dalam tabel EMPLOYEES harus memiliki nilai antara kolom LOWEST_SALARY dan kolom HIGHEST_SALARY dari tabel JOB_GRADES. Hubungan tersebut diperoleh dengan menggunakan operator selain operator sama dengan =. Contoh pada Gambar 4.10 dan 4.11 membuat non-Equijoin untuk mengevaluasi kelas gaji karyawan. Gaji harus berada antara setiap pasangan dari rentang gaji terendah dan gaji tertinggi. Ketika query dijalankan semua karyawan gajinya berada diantara gaji terendah dan gaji tertinggi akan dimunculkan dan tidak ada karyawan yang 80 dimunculkan sebanyak 2 kali, karena semua gaji karyawan terletak dalam batas-batas yang disediakan oleh tabel job_grades. Artinya, tidak ada karyawan yang mendapatkan gaji kurang dari nilai terendah yang ada pada kolom LOWEST_SAL atau lebih dari nilai tertinggi yang ada pada kolomHIGHEST_SAL. Kondisi lain seperti = dan = dapat digunakan, tetapi BETWEEN adalah yang paling sederhana. Gambar 4. 10 Tabel EMPLOYEES dan JOB_GRADES Gambar 4. 11 Implementasi Non-Equijoins pada Query 81 Outer Join Menggabung tabel dengan NATURAL JOIN, Klausa USING, atau Klausa ON hasilnya berada di dalam Inner Join, sedangkan setiap baris yang tak bersesuaian atau tidak cocok tidak akan ditampilkan pada keluaran. Untuk mengembalikan atau menampilkan baris yang tak bersesuaian atau tidak cocok, pengguna dapat menggunakan Outer Join. Outer Join mengembalikan semua baris yang memenuhi kondisi join dan juga mengembalikan beberapa atau semua baris dari satu tabel baik yang memiliki pasangan ataupun yang tidak memiliki pasangan pada tabel lain. Ada tiga jenis Outer Join :  LEFT OUTER JOIN  RIGHT OUTER JOIN  FULL OUTER JOIN Left Outer Join Query pada Gambar 4.12 akan mengembalikan semua baris dalam tabel EMPLOYEES yang merupakan tabel kiri, termasuk juga baris yang nilaianya tidak cocok dengan baris yang berada di tabel DEPARTMENTS. Gambar 4. 12 Hasil Query Left Outer Join 82 Right Outer Join Query pada Gambar 4.13, akan mengembalikan semua baris dalam tabel DEPARTMENTS, yang merupakan tabel kanan,termasuk juga baris yang nilainya tidak cocok dengan baris yang berada di tabel EMPLOYEES. Gambar 4. 13 Hasil Query Right Outer Join pada Full Outer Join Query pada Gambar 4.14 akan mengembalikan semua baris dalam tabel EMPLOYEES, termasuk juga baris yang nilainya tidak cocok dengan baris yang berada di tabel DEPARTMENTS. Selain itu Query juga akan mengambilkan semua baris dalam tabel DEPARTMENTS, termasuk juga baris yang nilainya tidak cocok dengan baris yang berada di tabel EMPLOYEES. 83 Gambar 4. 14 Hasil Query Full Outer Join pada Produk Cartesian Ketika kondisi join tidak valid atau kondisi join dihilangkan atau tanpa menggunakan kondidsi join, maka akan menghasilkan produk Cartesian, di mana semua kombinasi baris ditampilkan. Semua baris dalam tabel pertama digabung dengan semua baris dalam tabel kedua.Sebuah produk Cartesian cenderung menghasilkan sejumlah besar baris, dan hasilnya adalah jarang berguna. Pada Gambar 4.15, ditampilkan nama belakang karyawan dan nama departemen dari tabel EMPLOYEES dan tabel DEPARTMENTS. Karena tidak ada kondisi join yang ditetapkan atau dinyatakan, semua baris20 baris dari tabelEMPLOYEES digabung dengan semua baris 8 baris dalam tabel DEPARTMENTS, sehingga menghasilkan keluaran 160 baris. 84 Gambar 4. 15 Hasil Query Cartesian Product Cross Join Cross Join akan menghasilkan produk Cartesian dari dua buah tabel. Jumlah data yang dihasilkan merupakan perkalian jumlah data pada tabel pertama dengan jumlah data pada tabel kedua seperti ditunjukkan pada Gambar 4.16. Gambar 4. 16 Hasil Query CROSS JOIN

D. Aktivitas Pembelajaran

Aktivitas pada kegiatan pembelajaran 4, mencakup topik-topik berikut: 1. Menggabung tabel menggunakan Equi join 2. Melakukan penggabungan tabel menggunakan Outer Join dan Self Join 3. Menambah kondisi Join 85

E. Latihan Kasus Tugas

1. User ingin melakukan join antara tabel pegawai dan bagian. Di dalam tabel pegawai masih terdapat beberapa pegawai yang belum ditempatkan ke bagian tertentu. Jika user tersebut ingin menampilkan semua pegawai, baik yang sudah ditempatkan maupun yang belum ditempatkan ke bagian tertentu, maka query yang tepat adalah: a. SELECT a.nama_pegawai, b.nama_bagian FROM pegawai a, bagian b WHERE a.kode_bagian=b.kode_bagian+; b. SELECT a.nama_pegawai, b.nama_bagian FROM pegawai a RIGHT OUTER JOIN bagian b ON a.kode_bagian=b.kode_bagian; c. SELECT a.nama_pegawai, b.nama_bagian FROM pegawai a FULL OUTER JOIN bagian b ON a.kode_bagian=b.kode_bagian; d. SELECT a.nama_pegawai, b.nama_bagian FROM pegawai a, bagian b WHERE a.kode_bagian+=b.kode_bagian; 2. Pilih 2 pernyataan klausa USING pada JOIN antartabel yang benar adalah: a. Klausa USING digunakan jika ada beberapa kolom yang namanya sama di tabel yang akan di-join b. Klausa USING digunakan jika tidak ada kolom yang namanya sama di kedua tabel c. Klausa USING hanya akan menampilkan data-data yang namanya sama di kedua tabel yang di-join d. Nama kolom yang disebutkan pada klausa USING tidak boleh diawali dengan nama tabel atau tabel alias 3. Anda ingin membuat laporan dengan melibakan empat buah tabel. Agar tidak terjadi cartesian product, minimal berapa kondisi join yang diperlukan untuk mengantisipasi hal tersebut? a. 1 kondisi join b. 2 kondisi join c. 3 kondisi join d. 4 kondisi join 4. Penggunaan natural join yang paling tepat adalah a. Jika hanya satu kolom yang namanya sama di tabel yang di-join 86 b. Jika hanya 2 kolom atau lebih yang namanya sama di tabel yang di- join c. Jika tidak ada kolom yang namanya sama di tabel yang di-join d. Jika hanya satu record yang sama dari tabel yang di-join

F. Rangkuman

Ada beberapa cara untuk menggabung tabel. Jenis untuk menggabung tabel yaitu: Equijoin, Non-equijoin, Outer join, Self-join, Cross join, Natural join, dan Full or two-sided outer join. Hasil produk Cartesian akan menampilkan semua kombinasi dari baris, yang dapat dilakukan dengan menghilangkan klausa WHERE atau dengan klausa CROSS JOIN. Tabel Alias dapat mempercepat akses ke database dan me-mori yang digunakan relatif lebih sedikit. Hal penting yang harus diperhatikan adalah: 1. Join memerlukan kondisi join. Tanpa kondisi join maka join akan menghasilkan produk Cartesian. 2. Kondisi pembanding Equijoin menggunakan tanda sama dengan =. Join yang menggunakan selain tanda sama dengan dikondisi join disebut non- equijoin. 3. Inner join menampilkan data yang punya pasangan pada kedua tabel 4. Outer join menampilkan data yang ada pasangannya maupun data yang tidak memiliki pasangan pada kedua tabel. Ada 3 Outer join yaitu : LEFT OUTER JOIN, RIGHT OUTER JOIN, dan FULL OUTER JOIN. 5. NATURAL JOIN digunakan jika terdapat satu dan hanya satu kolom yang namanya sama pada kedua tabel.

G. Umpan Balik dan Tindak Lanjut

1. Apakah anda sudah mampu menjelaskan bagaimanacara untuk mendapatkan datayang di-peroleh dari beberapa tabel lebih dari satu tabel dan berapa prosen tingkat kompetensinya? 2. Apakah anda sudah mampu menggunakan JOIN untuk melihat informasi dari beberapa tabel dan berapa prosen tingkat kompetensinya? 3. Apakah anda sudah mampu menampilkan data yang diperoleh dari beberapa table dan berapa prosen tingkat kompetensinya? 87

H. Kunci Jawaban

1. a

2. a,d

3. c 4. a 88