Terkadang Anda perlu menampilkan data dari beberapa tabel. Untuk melakukan itu, Anda perlu menautkan satu tabel ke tabel lain. Ada berbagai cara di mana kita dapat memperoleh data dari Beberapa tabel. Di sini saya akan fokus pada Oracle Joins dengan contoh. Ini berlaku untuk semua Sql Joins secara umum juga . Saya akan menjelaskan inner join, outer join, cross join, natural join, Cartesian join dengan contoh
Oracle Bergabung
Sebuah Oracle Bergabung adalah kueri yang menggabungkan baris dari dua atau lebih tabel oracle.
Oracle melakukan join setiap kali beberapa tabel muncul di klausa FROM. Untuk menggabungkan dua tabel, Anda perlu mengidentifikasi kolom umum yang menghubungkan dua tabel. Dalam klausa WHERE Anda mendefinisikan hubungan antara tabel yang tercantum dalam klausa FROM.
Beberapa Pedoman untuk Oracle Joins ( Sql Joins)
1) saat menulis pernyataan pilih yang menggabungkan tabel, adalah praktik yang baik untuk mendahului nama kolom dengan nama tabel untuk tujuan kejelasan.
2) Untuk menggabungkan m tabel, kita membutuhkan setidaknya m-1 kondisi
3) Kita bisa menggunakan alias tabel untuk nama tabel jika nama tabelnya panjang. Tabel terlihat kode lebih pendek dan karenanya lebih sedikit memori
4) Jika Anda tidak menggunakan nama_tabel atau alias tabel saat memilih kolom dan Jika beberapa tabel memiliki nama kolom yang sama, maka kita harus menentukan nama_tabel untuk kolom yang umum di seluruh tabel
Gabung Dalam
Operator yang paling umum digunakan untuk menghubungkan dua tabel adalah operator kesetaraan (=). Ini disebut kesetaraan bergabung atau equijoin . Gabung sederhana ini juga dikenal sebagai gabung dalam
Contoh Gabung Dalam Oracle
Syntax
Select tab1.col,tab2.col
from tab1 ,tab2
where tab1.col=tab2.col
SELECT EMP.EMPNO,EMP.ENAME, DEPT.DEPTNO,DEPT.DNAME
FROM EMP , DEPT
where EMP. DEPTNO= DEPT. DEPTNO;
Untuk mengeksekusi gabungan dari tiga tabel atau lebih, Oracle menggabungkan dua tabel berdasarkan kondisi join, kemudian menggabungkan hasilnya ke tabel lain, berdasarkan kondisi join dan berulang sampai semua tabel bergabung.
Gabungan Kompleks
Memiliki satu atau lebih kondisi yang ditambahkan dalam klausa WHERE. Misalnya, jika Anda tertarik dengan semua departemen dan lokasinya di luar Inggris, gunakan
SELECT LOCATIONS.LOCATION_ID, CITY, DEPARTMENT_NAME
FROM LOCATIONS, DEPARTMENTS
WHERE LOCATIONS.LOCATION_ID = DEPARTMENTS.LOCATION_ID
AND COUNTRY_ID != 'UK';
Non –equijoin
Non-equijoin adalah kondisi join selain dari operator persamaan.
Ini adalah pernyataan gabungan dalam yang menggunakan operasi yang tidak sama (yaitu:<>,>, <, =, BETWEEN, dll.) untuk mencocokkan baris dari tabel yang berbeda
SELECT e.ename, e.sal, s.grade
FROM emp e, sal_grade s
WHERE e.sal BETWEEN s.low_sal AND s.high_sal;
Produk Cartesian atau Cartesian Join atau Cross Join
-Gabungan Kartesius (atau produk Kartesius) (atau Penggabungan Silang) terjadi saat data dipilih dari dua tabel atau lebih dan kondisi penggabungan ditentukan atau tidak ada hubungan umum yang ditentukan dalam klausa WHERE
-Jika bergabung dilakukan dan tidak ada kondisi bergabung yang ditentukan, hasil produk Cartesian. Produk Cartesian adalah himpunan hasil yang merupakan produk dari total baris dua tabel. Jika tabel "P" memiliki 100 baris dan tabel "Q" memiliki 100 baris dan produk Cartesian dikembangkan, himpunan hasil yang dihasilkan akan memiliki 10.000 baris. Jika kueri menggabungkan tiga tabel atau lebih, pengoptimal mungkin menemukan cara untuk memilih urutan gabungan yang menghalangi produk Cartesian, tetapi jangan mengandalkannya.
SELECT EMPNO,ENAME, DEPT.DEPTNO,DNAME FROM EMP , DEPT ;
or
SELECT EMPNO,ENAME, DEPT.DEPTNO,DNAME FROM EMP cross join DEPT ;
Gabungan Luar
Gabungan dalam yang telah kita lihat, mengembalikan baris yang cocok dari dua atau lebih tabel sesuai dengan kondisi bergabung. Mekanisme Outer Join mengembalikan data dari satu tabel meskipun tidak ada baris yang sesuai dalam tabel join.
Ada tiga gabungan luar
a) Gabung Luar Kiri atau Gabung Kiri
b) Gabung Luar Kanan atau Gabung Kanan
c) Gabung luar penuh atau Gabung penuh
Gabung Luar Kiri
mengembalikan baris yang cocok dari kedua tabel serta baris yang tidak cocok dari tabel di sebelah kiri klausa gabungan.
LEFT OUTER JOIN akan mengembalikan semua record dari tabel kiri dan hanya record dari tabel kanan yang berpotongan dengan tabel kanan
Berikut adalah contoh Oracle Left outer Join
Example:
select empno,ename,emp.deptno,dname
from emp
LEFT OUTER JOIN dept
on emp.deptno=dept.deptno;
sintaksis gabungan oracle (+) :Dalam database Oracle, kita juga dapat menggunakan sintaks tanda plus untuk gabungan luar kiri. Dalam hal ini, gabungan plus berada di sisi kanan persamaan.
Example:
select empno,ename,emp.deptno,dname
from emp ,dept where emp.deptno=dept.deptno(+) ;
Gabung Luar Kanan
mengembalikan baris yang cocok dari kedua tabel serta baris yang tidak cocok dari tabel di sebelah kanan klausa gabungan.
Berikut adalah contoh untuk Oracle Right outer join
Example:
select empno,ename,dept.deptno,dname
from emp
right OUTER JOIN dept
on emp.deptno=dept.deptno;
sintaksis gabungan oracle (+) :Dalam database Oracle, kita juga dapat menggunakan sintaks tanda plus untuk RIGHT OUTER JOIN. Dalam hal ini, gabung kanan ditunjukkan ketika tanda plus ada di sebelah kiri persamaan.
Example:
select empno,ename,dept.deptno,dname
from emp ,dept where emp.deptno(+)=dept.deptno ;
Gabung Luar Penuh
Jenis gabungan ini mengembalikan semua baris dari tabel sisi KIRI dan tabel sisi KANAN dengan nol di tempat di mana kondisi gabungan tidak terpenuhi
Berikut adalah contoh untuk Oracle Full Outer Join
select empno,ename,dept.deptno,dname
from emp
full OUTER JOIN dept
on emp.deptno=dept.deptno;
Kueri ini akan mengembalikan semua baris dari kedua tabel. Menggunakan sintaks Oracle menggunakan E.DEPT_ID (+) =D.DEPT_ID (+) tidak mungkin karena tanda (+) hanya dapat merujuk pada satu tabel. Kita harus menggunakan Union untuk mencapai hal yang sama menggunakan tanda +
select empno,ename,dept.deptno,dname
from emp ,dept where emp.deptno=dept.deptno(+)
union
select empno,ename,dept.deptno,dname
from emp ,dept where emp.deptno(+)=dept.deptno;
Beberapa RDBMS tidak mendukung klausa Full outer join, maka kita dapat menggunakan di bawah ini untuk menutupinya
select empno,ename,dept.deptno,dname
from emp
left OUTER JOIN dept
on emp.deptno=dept.deptno
union
select empno,ename,dept.deptno,dname
from emp
right OUTER JOIN dept
on emp.deptno=dept.deptno;
GABUNG ALAMI
Gabungan alami menentukan bahwa gabungan menghubungkan semua kolom dengan nama yang sama pada dua tabel.
Pada dasarnya ini membandingkan kolom umum dari kedua tabel satu sama lain. Seseorang harus memeriksa apakah kolom umum ada di kedua tabel sebelum melakukan penggabungan alami.
Example
SELECT EMP_ID,EMP_NAME, DEPT_ID,DEPARTMENT_NAME FROM EMP NATURAL JOIN DEPT;
Di sini dept_id adalah kolom yang sama antara tabel emp dan dept
Gabung alami dapat menggabungkan lebih dari dua tabel
Semoga Anda menyukai postingan ini di Oracle join dengan contoh.
Artikel Terkait
Tutorial sql Oracle
Subquery Oracle Sql
Oracle Set Operator
Tampilan Oracle
cara menulis kueri sql
Kolom Kenaikan Otomatis – Urutan
Gabung Silang di Oracle
bergabung sendiri di oracle dengan contoh
contoh sintaks bergabung dengan oracle
Hash Gabung di Oracle