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