
Query Join dalam Oracle.
Joins
Join adalah query yang menggabungkan baris dari dua atau lebih tabel. Oracle melakukan join setiap kali beberapa tabel muncul dalam query FROM clause. Query dapat memilih kolom dari salah satu tabel ini. Jika dua dari tabel ini memiliki nama kolom yang sama, Anda harus memenuhi syarat semua referensi ke kolom ini, sepanjang query dengan nama tabel untuk menghindari ketidakjelasan / ambigu.
Kondisi Join.
Kebanyakan join query mengandung kondisi WHERE clause yang membandingkan dua kolom, masing-masing dari tabel yang berbeda. Kondisi seperti ini disebut kondisi join. Untuk menjalankan join, Oracle menggabungkan pasangan baris, masing-masing berisi satu baris dari setiap tabel, dimana kondisi join mengevaluasi TRUE. Kolom dalam kondisi join dapat juga tidak muncul dalam daftar tampilan.
Equijoins
Equijoin adalah join dengan kondisi join yang mengandung operator kesetaraan (=). Equijoin menggabungkan baris yang memiliki nilai setara untuk kolom yang ditentukan.
Misalnya query berikut mengembalikan nama empno, nama, sal, deptno dan jurusan dan kota dari tabel departemen.
select emp.empno,emp.ename,emp.sal,emp.deptno,dept.dname,dept.city from employee,dept where employee.deptno=dept.deptno;
Query di atas juga bisa ditulis seperti, menggunakan alias, seperti di bawah ini.
select e.empno, e.ename, e.sal, e.deptno, d.dname, d.city from employee e, dept d where emp.deptno=dept.deptno;
Query di atas juga bisa ditulis seperti yang diberikan di bawah ini tanpa menggunakan tabel kualifikasi.
select empno,ename,sal,dname,city from employee,dept where employee.deptno=dept.deptno;
Dan jika Anda ingin melihat semua kolom dari kedua tabel maka query bisa ditulis seperti ini.
select * from employee,dept where emp.deptno=dept.deptno;
Non Equi Joins.
Non equi join digunakan untuk mengembalikan hasil dari dua atau lebih tabel dimana join secara langsung tidak mungkin dilakukan.
Misalnya kita memiliki tabel employee dan tabel salgrade. Tabel salgrade berisi tingkatan gaji rendah dan gaji tinggi. Misalkan anda ingin mencari nilai karyawan berdasarkan gaji mereka maka anda bisa menggunakan NON EQUI join.
select e.empno, e.ename, e.sal, s.grade from employee e, salgrade s
where e.sal between s.lowsal and s.hisal
Self Joins.
Self Joins adalah bergabung dengan tabel untuk dirinya sendiri. Tabel ini muncul dua kali pada klausa FROM dan diikuti oleh tabel alias yang memenuhi syarat nama kolom dalam kondisi join. Untuk melakukan join sendiri, Oracle menggabungkan dan mengembalikan deretan tabel yang memenuhi kondisi join.
Misalnya query berikut mengembalikan nama karyawan dan nama manajer mereka untuk siapa mereka bekerja.
Select e.empno, e.ename, m.ename “Manager” from employee e,
employee m where e.mgrid=m.empno
Inner Join.
Inner Join (kadang disebut "simple join") adalah gabungan dari dua atau lebih tabel yang mengembalikan hanya baris yang memenuhi kondisi join.
Outer Joins.
Sebuah outer join mengembalikan semua baris yang memenuhi kondisi join dan juga mengembalikan beberapa atau semua baris dari satu tabel yang tidak memiliki baris dari yang lain memenuhi kondisi join.
~ Untuk menulis sebuah query yang melakukan join outer dari tabel A dan B dan mengembalikan semua baris dari A (join outer kiri), gunakan sintaks ANSI LEFT [OUTER] JOIN, atau gunakan outer join operator (+) ke semua kolom dari B dalam kondisi join. Untuk semua baris di A yang tidak memiliki baris yang cocok di B, Oracle mengembalikan null untuk setiap ekspresi daftar pilih yang berisi kolom B.
~ Untuk menulis sebuah query yang melakukan join outer dari tabel A dan B dan mengembalikan semua baris dari B (join outer kanan), gunakan sintaks ANSI RIGHT [OUTER], atau gunakan outer join operator (+) ke semua kolom A dalam kondisi join. Untuk semua baris di B yang tidak memiliki baris yang cocok di A, Oracle mengembalikan null untuk setiap ekspresi daftar pilih yang berisi kolom A.
~ Untuk menulis sebuah query yang melakukan join luar dan dan mengembalikan semua baris dari A dan B, diperpanjang dengan null jika mereka tidak memenuhi kondisi join (join outer penuh), gunakan sintaks ANSI FULL [OUTER] JOIN.
Misalnya, kueri berikut mengembalikan semua nama karyawan dan departemen dan bahkan nama departemen tempat tidak ada karyawan yang bekerja.
select e.empno,e.ename,e.sal,e.deptno,d.dname,d.city from employee e, dept d
where e.deptno(+)=d.deptno;
tanda (+) itu adalah menentukan ke kolom yang nilainya kurang.
Cartesian Products.
Jika dua tabel dalam query join tidak memiliki kondisi join, Oracle mengembalikan produk Cartesian mereka. Oracle menggabungkan setiap baris dari satu meja dengan setiap baris yang lain. Produk Cartesian selalu menghasilkan banyak baris dan jarang berguna. Misalnya, produk Cartesian dari dua tabel, masing-masing dengan 100 baris, memiliki 10.000 baris. Selalu sertakan syarat bergabung kecuali Anda secara khusus memerlukan produk Cartesian.
Sumber : Disini
Semoga bermanfaat.
Best Regards
0 komentar:
Posting Komentar