Mengambil data dari beberapa tabel ( Relasi Tabel ) menggunakan Join

https://im-informatika.blogspot.com/2014/12/mengambil-data-dari-beberapa-tabel.html
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 :

berikut :
- Cross joins
- Natural joins
- Klausa USING
- Full (atau two-sided) outer joins
- Kondisi-kondisi penggabungan tidak tetap untuk outer join
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.
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.
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.
Tabel Alias
Berguna untuk menyederhanakan query dan meningkatkan performa.
Contoh :
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 :
Contoh :
Three-Way join adalah suatu join pada tiga buah tabel. Dalam acuan sintak SQL:1999, join dilakukan dari kiri ke kanan.
Contoh :
non-equijoins adalah suatu kondisi join yang berisi suatu operator ke-sama-an (equality)
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
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
Contoh :
Contoh :
Contoh :
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.
Klausa CROSS JOIN menghasilkan cross-product dari dua tabel. CROSS JOIN disebut juga Cartesian product antara dua tabel.
Contoh :
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
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 :
Tipe-Tipe pada Join
Join yang mengacu pada standar SQL:1999 termasuk sebagaiberikut :
- 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;
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.
SELECT employees.employee_id, employees.last_name, departments.location_id, department_id FROM employees JOIN departments USING (department_id)
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);
Self-Joins Menggunakan Klausa ON
Contoh :
SELECT e.last_name emp, m.last_name mgr FROM employees e JOIN employees m ON (e.manager_id = m.employee_id);
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;
Non-Equijoins
non-equijoins adalah suatu kondisi join yang berisi suatu operator ke-sama-an (equality)
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;
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) ;
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) ;
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) ;
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.
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 ;
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