Mengenal Fungsi Join Pada MySQL
LEFT OUTER JOIN
Kata
kunci OUTER sebenarnya adalah bersifat opsional jadi, baik ditulis atau
tidak, hasilnya akan tetap sama, sebab pada dasarnya, LEFT OUTER JOIN =
LEFT JOIN, sedangkan LEFT JOIN itu sendiri adalah bagian dari OUTER
JOIN.
Ilustrasi :
Dengan asumsi bahwa semua field pada tabel di atas
sudah berisi dengan data - data
Keterangan :
Pada dasarnya semua field pada
tabel di atas sudah memiliki data masing-masing namun dikarenakan kita
menggunakan perintah query LEFT OUTER JOIN, maka data yang di tampilkan hanya
field pada sisi kiri saja (lingkup tabel yang sama), sementara data field pada
sisi kanan (lingkup tabel yang sama) di hidden / tidak di tampilkan, pada tabel
di atas kita indikasikan dengan warna biru.
Contoh :
Dengan menggunakan database northwind kita akan menggabungkan 2
relasi tabel, seperti customers dengan
order.
Jika ingin memahami lebih jauh dengan cara mempraktekannya, silakan download terlebih dahulu database northwind disini
Dengan perintah Query
seperti dibawah ini :
SELECT customers.CustomerID, customers.ContactName,
orders.OrderID, orders.OrderDate
FROM customers LEFT OUTER JOIN orders
ON customers.CustomerID=orders.OrderID;
atau
SELECT customers.CustomerID, customers.ContactName,
orders.OrderID, orders.OrderDate
FROM customers LEFT JOIN orders
ON customers.CustomerID=orders.OrderID;
Ilustrasi :
Dengan asumsi bahwa semua field pada tabel di atas sudah memiliki data-data.
INNER JOIN
Dengan menggunakan perintah Query sebagaimana berikut :
SELECT customers.CustomerID, customers.ContactName,
orders.OrderID, orders.OrderDate
FROM customers LEFT OUTER JOIN orders
ON customers.CustomerID=orders.OrderID;
atau
SELECT customers.CustomerID, customers.ContactName,
orders.OrderID, orders.OrderDate
FROM customers LEFT JOIN orders
ON customers.CustomerID=orders.OrderID;
Maka
akan diperoleh hasil seperti di bawan ini :
RIGHT
OUTER JOIN
Identik dengan LEFT OUTER JOIN yaitu sama-sama
merupakan bagian dari OUTER JOIN, hanya saja RIGHT OUTER JOIN adalah
kebalikannya, yaitu RIGHT OUTER JOIN = RIGHT JOIN, dimana data field yang akan
di tampilkan adalah pada sisi kanan, dengan catatan masih dalam lingkup tabel
yang sama.
Ilustrasi :
Dengan asumsi bahwa semua field pada tabel di atas sudah memiliki data-data.
Keterangan :
Pada dasarnya semua field pada
tabel di atas sudah memiliki data masing-masing namun dikarenakan kita
menggunakan perintah query RIGHT OUTER JOIN, maka data yang di tampilkan hanya
field pada sisi kanan saja (lingkup tabel yang sama), sementara data field pada
sisi kiri (lingkup tabel yang sama) di hidden / tidak di tampilkan, pada tabel
di atas kita indikasikan dengan warna biru.
Contoh :
Dengan menggunakan database northwind kita akan menggabungkan 2
relasi tabel, seperti customers dengan
order.
Dengan perintah Query seperti dibawah ini :
SELECT
customers.CustomerID, customers.ContactName,
orders.OrderID,
orders.OrderDate
FROM
customers RIGHT OUTER JOIN orders
ON
customers.CustomerID=orders.OrderID;
Atau
SELECT customers.CustomerID,
customers.ContactName,
orders.OrderID,
orders.OrderDate
FROM
customers RIGHT JOIN orders
ON
customers.CustomerID=orders.OrderID;
Maka
akan diperoleh hasil seperti di bawan ini :
INNER JOIN
Dengan INNER JOIN,
tabel akan digabungkan dua arah, sehingga tidak ada data yang NULL di satu sisi
atau dengan kata lain data NULL tidak akan di tampilkan, Sebagai contoh, dengan
menggunakan database northwind kita
akan menggabungkan tabel customers dan orders dimana kita akan
menampilkan daftar customers yang pernah melakukan order.
Dengan menggunakan perintah Query sebagaimana berikut :
SELECT
customers.CustomerID, customers.Country, orders.OrderID, orders.OrderDate
FROM
customers INNER JOIN orders
ON
customers.CustomerID = orders.CustomerID
Maka
diperoleh hasil :
Kesimpulan :
INNER
JOIN digunakan untuk mencari data yang sama antara dua table, sedangkan
OUTER JOIN digunakan untuk mencari data yang sama sekaligus data yang
tidak sama.
STRAIGHT_JOIN
Dari kata straight yang artinya
lurus atau jujur atau apa adanya, jadi STRAIGHT_JOIN merupakan operator MySQL yang di gunakan untuk menggabungkan
2 tabel secara menyeluruh dan apa adanya, meskipun tidak ada keterkaitan data.
Perintah STRAIGHT_JOIN sama seperti dengan JOIN, namun STRAIGHT_JOIN tidak mengenal klausa WHERE. Dengan menggunakan
database northwind, maka perhatikan contoh penggunaan berikut ini :
SELECT * FROM customers
STRAIGHT_JOIN products
Meskipun tabel customers dengan tabel products tidak ada relasi (kesamaan data) maka dengan perintah STRAIGHT_JOIN keduanya tetap bisa di gabungkan,
NATURAL JOIN
Contoh :
SELECT CustomerID, CompanyName, OrderID, OrderDate
FROM customers NATURAL JOIN orders
CROSS JOIN
Ilustrasi :
Operasi
natural join adalah operasi equijoin yang memiliki kesamaan dalam semua
field yang memiliki nama yang sama dalam tabel R dan tabel S. Dalam hal
ini, kita dapat menghilangkan kondisi dalam operasi join karena akan
menghasilkan dua field dengan nama yang sama.
Jadi untuk melakukan NATURAL JOIN antara dua tabel harus memenuhi syarat berikut ini : Dua
tabel yang ingin di NATURAL JOIN harus mempunyai minimal satu nama
kolom atau field yang sama dan tipe data yang sama, jika tidak maka akan
terjadi error.
Contoh :
Dengan menggunakan
database norhwind, kita akan melakukan NATURAL JOIN pada tabel customers dengan orders, dimana kedua tabel tersebut memiliki kesamaan field dan tipe
data pada kolom CustomersID.
SELECT CustomerID, CompanyName, OrderID, OrderDate
FROM customers NATURAL JOIN orders
Dan hasilnya seperti di bawah ini :
CROSS JOIN
Cross Join disebut juga dengan CARTESIAN PRODUCT yaitu perkalian
dari 2 buah tabel
Ilustrasi :
Misalkan data tabel A : {a,b,c,d } , data Tabel B {F,G,H,I}
Jika tabel A CROSS JOIN tabel B, maka akan menjadi {aF, aG, aH,
aI, bF, bG, bH, bI, cF, cG, cH, cI, dF, dG, dH, dI}.
Contoh :
Dengan database northwind, kita akan melakukan CROSS JOIN pada
tabel categories dengan tabel shippers.
Dimana tabel categories
sebagai berikut :
Dan tabel shippers
sebagai berikut :
Jika keduanya di CROSS JOIN,
SELECT
CategoryName, CompanyName
FROM
categories CROSS JOIN shippers
maka hasilnya akan
seperti di bawah ini :
Sekian pembahasan tentang perbedaan fungsi JOIN pada mySQL kali ini, semoga bermanfaat, terimakasih.. salam programmer.
0 KOMENTAR