Brace Your Self





June 29, 2013

Penggunaan JOIN pada Oracle


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 Join
Join 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
Natural Join bisa dilakukan antar dua tabel dengan ketentuan:
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 Join
Join 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 Join
Apabila ingin menampilkan semua data di tabel kiri yang memiliki atau tidak memiliki pasangan. Penentuan Left Outer Joinmaka tanda (+) diletakkan disisi kanan tanda pembanding.
 

SELECT e.employee_id, e.last_name, e.job_id, e.department_id, d.department_name
FROM employees e LEFT OUTER JOIN departments d
ON (e.department_id = d.department_id);




- Right Outer Join
Apabila 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 Join
Merupakan 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 Join
Merupakan 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 Join
Join 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 Join
Join 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

USING merupakan pengembangan dari natural join, dengan ketentuan sebagai berikut:
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 ON 
Memungkinkan 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:

Thanks for visit my blog
© 2008 - 2013 keroco.blogspot.com


free hit counter
   

Entertainment    
eXTReMe Tracker