Mengambil data dari beberapa tabel ( Relasi Tabel ) menggunakan Join

Disaat kita memerlukan data dari beberapa tabel dalam database, dapat menggunakan kondisi join. Data dari satu tabel dapat digabungkan dengan data dari tabel lain berdasarkan nilai-nilai yang terdapat pada kolom-kolom yang berhubungan, yang disebut kolom-kolom primary key dan foreign key.
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).
Berikut gambaran tentang relasi tabel :
relasi tabel


Tipe-Tipe pada Join

Join yang mengacu pada standar SQL:1999 termasuk sebagai
berikut :
- Cross joins
- Natural joins
- Klausa USING
- Full (atau two-sided) outer joins
- Kondisi-kondisi penggabungan tidak tetap untuk outer join

Sintak  join tabel

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 ];

 
Penjelasan :
table1.column menunjukkan tabel dan kolom dari mana data diperoleh
NATURAL JOIN menggabungkan dua tabel berdasarkan nama kolom yang sama
JOIN table USING column_name melakukan suatu equijoin berdasarkan nama kolom.
JOIN table ON table1.column_name melakukan suatu equijoin berdasarkan suatu kondisi pada klausa ON, = table2.column_name
LEFT/RIGHT/FULL OUTER digunakan untuk melakukan outer joins.
CROSS JOIN mengembalikan suatu Cartesian product dari dua tabel.

 

Natural Joins


Klausa NATURAL JOIN adalah didasarkan pada semua kolom pada dua tabel yang memiliki nama yang sama. NATURAL JOIN memilih baris-baris dari dua tabel yang memiliki nilai-nilai yang sama dalam semua kolom yang sesuai. Join dapat terjadi hanya pada kolom-kolom yang memiliki nama dan tipe data yang sama pada kedua tabel. Jika kolom-kolom memiliki nama yang sama tetapi memiliki tipe data yang berbeda, maka sintak NATURAL JOIN menyebabkan suatu error.
Contoh :

tabel LOCATIONS digabungkan ke tabel DEPARTMENTS oleh kolom LOCATION_ID, dimana satu-satunya kolom dengan nama yang sama pada kedua tabel. Jika
terdapat kolom lain yang sama, join akan menggunakan semua kolom-kolom tersebut.


SELECT department_id, department_name,
location_id, city
FROM departments
NATURAL JOIN locations;
 

CONTOH NATURAL JOINS



Klausa USING


Jika beberapa kolom memiliki nama-nama yang sama tapi tipe datanya tidak sesuai, klausa NATURAL JOIN dapat dimodifikasi dengan klausa USING untuk menentukan kolom - kolom yang akan digunakan sebagai suatu equijoin. Gunakan klausa USING untuk penyesuaian hanya satu kolom saat beberapa kolom sama. Jangan gunakan nama tabel atau alias pada kolom-kolom referensi. Klausa-klausa NATURAL JOIN dan USING adalah mutually exclusive.
Contoh:

Hubungan antara tabel-tabel EMPLOYEES dan DEPARTMENTS adalah suatu equijoin. karena itu, nilai-nilai pada kolom DEPARTMENT_ID di kedua tabel harus sama. Seringkali, tipe dari join ini melibatkan kelengkapan-kelengkapan primary dan foreign key.

primay key & foreign key


SELECT employees.employee_id, employees.last_name, 
departments.location_id, department_id
FROM employees JOIN departments
USING (department_id) 
contoh using joins


Tabel Alias
Berguna untuk menyederhanakan query dan meningkatkan performa.
Contoh :
SELECT e.employee_id, e.last_name, 
d.location_id, department_id
FROM employees e JOIN departments d
USING (department_id) ;
 

Klausa ON


Kondisi join untuk natural join pada dasarnya adalah suatu equijoin pada seluruh kolom-kolom dengan nama yang sama. Gunakan klausa ON untuk menentukkan kondisi-kondisi
perubahan atau menentukan kolom-kolom untuk digabungkan. Kondisi penggabungan adalah dipisahkan dari kondisikondisi pencarian lain. Klausa ON membuat kode mudah untuk dipahami.
Contoh :
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);
 

on clause


Self-Joins Menggunakan Klausa ON


self - joins



Contoh :
SELECT e.last_name emp, m.last_name mgr
FROM employees e JOIN employees m
ON (e.manager_id = m.employee_id);
self - joins 2


Three-Way Joins dengan Klausa ON


Three-Way join adalah suatu join pada tiga buah tabel. Dalam acuan sintak SQL:1999, join dilakukan dari kiri ke kanan.

Contoh :

SELECT employee_id, city, department_name
FROM employees e 
JOIN departments d
ON d.department_id = e.department_id 
JOIN locations l
ON d.location_id = l.location_id;
three way join 
 


Non-Equijoins


non-equijoins adalah suatu kondisi join yang berisi suatu operator ke-sama-an (equality)

Non -Equijoins



Hubungan antara tabel EMPLOYEES dengan tabel JOB_GRADES adalah suatu contoh dari nonequijoins. Hubungan antara kedua kolom adalah bahwa kolom SALARY dalam tabel EMPLOYEES harus berada diantara nilai-nilai di kolom-kolom LOWEST_SALARY dan HIGEST_SALARY dalam tabel JOB_GRADES. Hubungan diperoleh menggunakan suatu operator lain daripada ke-sama-an (=).
Contoh :
Mendapatkan record dengan non-equijoins
SELECT e.last_name, e.salary, j.grade_level
FROM employees e JOIN job_grades j
ON e.salary 
BETWEEN j.lowest_sal AND j.highest_sal;
CONTOH NON - EQUIJOINS 
 

Outer Joins


OUTER JOINS

INNER Join Versus OUTER Join


Menggabungkan tabel-tabel dengan klausa-klausa NATURAL JOIN, USING atau ON menghasilkan  suatu  inner join. Beberapa baris yang tidak sesuai tidak ditampilkan pada output. Untuk  mengembalikan baris-baris yang tidak sesuai, Anda bisa menggunakan suatu outer join. Suatu outer join mengembalikan semua baris-baris yang memenuhi kondisi join dan juga mengembalikan beberapa atau semua baris-baris tersebut dari satu tabel yang mana tidak ada baris-baris dari tabel lain yang memenuhi kondisi join.
Ada tiga tipe dari outer join:
- LEFT OUTER
- RIGHT OUTER
- FULL OUTER
 

LEFT OUTER JOIN


Contoh :

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

RIGHT OUTER JOIN


Contoh :
SELECT e.last_name, e.department_id, d.department_name
FROM employees e RIGHT OUTER JOIN departments d
ON (e.department_id = d.department_id) ;

RIGHT OUTER JOIN

FULL OUTER JOIN


Contoh :
SELECT e.last_name, d.department_id, d.department_name
FROM employees e FULL OUTER JOIN departments d
ON (e.department_id = d.department_id) ;

FULL OUTER JOIN



Cartesian Products


Ketika suatu kondisi join tidak tepat atau dihilangkan semua, hasilnya adalah Cartesian product, dimana semua kombinasi dari baris-baris ditampilkan. Semua baris dalam tabel pertama digabungkan dengan semua baris dalam tabel kedua. Sebuah Cartesian product cenderung untuk menghasilkan sejumlah besar baris, dan hasilnya kurang bermanfaat. 
Suatu Cartesian product terbentuk ketika :
- Suatu kondisi join dihilangkan
- Suatu kondisi join tidak tepat
- Seluruh baris dalam tabel pertama digabungkan ke seluruh baris dalam tabel kedua

Untuk menghindari suatu Cartesian product, selalu sertakan sebuah kondisi join yang tepat.

caretsian product



CROSS JOIN


Klausa CROSS JOIN menghasilkan cross-product dari dua tabel.  CROSS JOIN disebut juga Cartesian product antara dua tabel.
Contoh :
SELECT last_name, department_name
FROM employees
CROSS JOIN departments ;
CROSS JOINS 
 

Nah, agan pasti sudah bisa memahami bagaimana menggunakan join untuk menampilkan data dari berbagai tabel dengan menggunakan Equijoin, Non-equijoin
, Outer join,  Self-join,  Cross join,  Natural join dan Full (atau two-sided) outer join. Sekian dulu postingan saya tentang Mengambil data dari beberapa tabel ( Relasi Tabel ) menggunakan Join, semoga postingan saya ini bermanfaat bagi agan – agan semua :). Tengkyu :D 

















Related

Sistem Basis Data 4253078441905675478

Post a Comment

emo-but-icon

Populer

Comments

item