Menampilkan Data Dari Banyak Table Menggunakan JOIN
Join merupakan sebuah operasi yang digunakan untuk mendapatkan data gabungan dari dua tabel atau lebih. Operasi ini digunakan dalam perintah SELECT dan biasanya dipakai untuk memperoleh detail data dari tabel-tabel yang saling terkait (memiliki relasi).
Bentuk umum JOIN:
SELECT table1.column, table2.column
From table1
[NATURAL JOIN table2] |
[JOIN table2 USING (column_name) ] |
[JOIN table2
ON (table1.column_name = table2.column_name) ] |
[LEFT | RIGHT | FULL OUTER JOIN table2
ON (table1.column_name = table2.column_name) ] |
[ CROSS JOIN table2 ] ;
Operasi JOIN pada Oracle, yaitu :
• Berdasarkan data yang dihasilkan:
1.Inner JoinJoin yang menghasilkan data yang bersesuaian atau data yang memenuhi kondisi join saja. Data yang tidak sesuai / tidak punya pasangan di tabel lawannya tidak akan dimunculkan.
Operator JOIN yang termasuk pada kategori ini adalah Natural Join.
- Natural Join
1. Ada kolom yang sama pada kedua tabel
2. Kolom yang namanya sama hanya ada satu kolom
3. Data yang muncul adalah data yang saling bersesuaian di antara dua tabel atau inner join.
SELECT department_name, street_address, location_id, city
FROM departments NATURAL JOIN locations
WHERE city <> ‘Seatle’ ;
Dengan adanya kondisi tersebut maka otomatis join dilakukan melalui kolom yang namanya sama.
2 Outer JoinJoin yang hasilnya merupakan gabungan data yang bersesuaian atau data yang memenuhi kondisi join dan data yang tidak punya pasangan di tabel lawannya. Selanjutnya Outer Join dibagi lagi menjadi Left Outer Join, Right Outer Join, dan Full Outer Join.
- Left Outer JoinApabila ingin menampilkan semua data di tabel kiri yang memiliki atau tidak memiliki pasangan. Penentuan Left Outer Joinmaka tanda (+) diletakkan disisi kanan tanda pembanding.
FROM employees e LEFT OUTER JOIN departments d
ON (e.department_id = d.department_id);
- Right Outer JoinApabila ingin menampilkan semua data di tabel kanan yang memiliki atau tidak memiliki pasangan. Penentuan Right Outer Joinmaka tanda (+) diletakkan disisi kiri tanda pembanding.
SELECT e.employee_id, e.last_name, e.job_id, e.department_id, d.department_name
FROM employees e RIGHT OUTER JOIN departments d
ON (e.department_id = d.department_id);
- Full Outer JoinMerupakan gabungan hasil left dan right outer join. Untuk menggabungkan menggunakan operator UNION.
SELECT e.employee_id, e.last_name, e.job_id, e.department_id, d.department_name
FROM employees e FULL OUTER JOIN departments d
ON (e.department_id = d.department_id);
3 Self JoinMerupakan join antar kolom dalam satu tabel. Join dengan satu tabel yang sama sebenarnya tidak bisa dilakukan, self join dilakukan dengan menggunakan tabel alias. Jadi satu tabel dibuat menjadi dua tabel alias sehingga seolah-olah join dilakukan dari dua tabel yang berbeda.
SELECT e.employee_id AS “KODE KARYAWAN”, e.last_name AS “NAMA KARYAWAN”,
m.employee_id AS “KODE MANAGER”, m.last_name AS “NAMA MANAGER”, e.job_id AS “JABATAN”
FROM employees e Join employees m
ON (e.manager_id = m.employee_id) ;
• Berdasarkan tanda pembanding pada klausa where:
1 Equi JoinJoin antara dua tabel yang kondisi joinnya menggunakan tanda sama dengan (=).
SELECT d.department_name, l.street_address, l.location_id, l.city
FROM departments d.locations l
WHERE d.location_id = l.location_id and city <> ‘Seatle’ ;
2 Non-Equi JoinJoin antara dua tabel yang kondisi joinnya menggunakan selain tanda sama dengan seperti : <, >, beetween, dsb.
SELECT DISTINC(j.job_title), e.salary, e.job_id, e.first_name
FROM employees e JOIN jobs j
ON e.salary BETWEEN j.min_salary AND j.max_salary;
- USING
1. Jika ada lebih dari satu kolom yang namanya sama pada tabel yang akan di di-join.
2. Klausa using digunakan untuk menentukan nama kolom yang akan digunakan sebagai kondisi join.
3. Pada nama kolom yang digunakan pada klausa using tidak boleh diawali dengan nama tabel.
SELECT e.employee_id, e.last_name, d.location_id, department_id
FROM employees e join departments d
USING (department_id) WHERE department_id <=30;
Klausa ONMemungkinkan dilakukan join pada dua tabel walaupun pada kedua tabel tersebut tidak ada kolom yang namanya sama untuk dijadikan sebagai kondisi join tetapi data pada kolom tersebut bersesuaian sehingga memungkinkan untuk dilakukan join.
SELECT e.employee_id, e.department_id, d.department_id, d.manager_id, d.department_name FROM employees e JOIN d epartments d ON (e.employee_id =d.department_id); Penambahan operator AND pada join 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) AND e.manager_id = 149;
Join Tiga Table Menggunakan Klause ON
SELECT employee_id AS “KODE PEGAWAI”, department_name AS “NAMA DIVISI”, street_address AS “ALAMAT”, city AS “KOTA” FROM employees e JOIN departments d ON d.deparment_id = e.department_id JOIN locations l ON d.location_id = l.location_id;
Cross Join Menghasilkan kombinasi semua baris yang terdapat dalam tabel-tabel yang digabungkan, baik itu yang tidak berpasangan maupun yang berpasangan. Bentuk paling sederhana dari penggabungan 2 buah tabel akan membentuk perkalian Cartesian.
SELECT last_name, department_name FROM employees CROSS JOIN deparments;
Download Here

No comments:
Post a Comment