Pada artikel ini kita akan membahas tutorial join di MySQL, atau penggabungan lebih dari satu tabel data antara tabel satu dengan yang lainnya, yang saling berhubungan dan melengkapi berdasarkan relasinya masing-masing.
Tabel pada database tidak dapat berdiri sendiri, dalam satu database sederhana sekalipun membutuhkan relasi untuk menunjang pengelolaan data yang lebih efisien. Sebagai contoh, lihat pada gambar sample data dibawah ini.
Sebagai contoh pada gambar rancangan database sederhana di atas, dapat diketahui melalui diagram tersebut bahwa pada setiap products
sudah pasti melekat brands
atau merek pada produk tersebut, tidak jarang setiap brands
memiliki products
yang bervariasi, lebih dari satu jenis produk.
Perlu diketahui bahwa ada beberapa cara yang bisa digunakan untuk menggabungkan dua atau lebih table pada database untuk menghadapkan hasil yang dibutuhkan.
Masing-masing fungsi join diatas dapat anda gunakan sesuai dengan kebutuhan pengelolaan data yang anda ingin hasilkan. Mari kita praktekan dari masing-masing fungsi join diatas.
Menyiapkan Data Sample
Untuk memulai praktek tentunya kita memerlukan beberapa table serta data dummy yang bisa kita gunakan, penulis sudah menyiapkan data dummy tersebut namun sebagai catatan contoh yang digunakan adalah nama brand dan produk akan tetapi dalam tulisan tutorial join mysql ini tidak ada unsur promosi atau semacamnya.
Buatlah dua buah tabel pada database anda dengan nama brands
dan juga products
, anda dapat menjalankan query dibawah ini.
create table brands (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) NOT NULL
);
create table products (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
brand_id INT
);
Code language: PHP (php)
Setelah itu tambahkan data brands
dengan menggunakan query dibawah ini…
INSERT INTO brands (name) VALUES ('Lenovo'),
('Dell'),
('Apple'),
('Asus'),
('Acer');
Code language: JavaScript (javascript)
Dan data products
menggunakan query dibawah ini…
INSERT INTO products (name, brand_id) VALUES ('IdeaPad', 1),
('Legion', 1);
INSERT INTO products (name, brand_id) VALUES ('Macbook Air', 3),
('Macbook Pro', 3);
INSERT INTO products (name, brand_id) VALUES ('ROG', 4),
('TUF', 4);
INSERT INTO products (name, brand_id) VALUES ('Aspire', 0),
('Predator', 0);
Code language: JavaScript (javascript)
Dengan begini kita mudah mempraktekan karena telah memiliki sample data yang akan kita gunakan.
Klausa Inner Join
Inner Join pada MySQL atau SQL umumnya digunakan untuk menggabungkan dua buah atau lebih tabel untuk menghasilkan data yang sesuai antara satu dengan tabel lainnya tanpa mengabaikan nilai yang tidak relevan, sehingga hanya data atau baris yang memiliki kecocokan yang akan dikeluarkan.
Sebagai contoh jalankan query dibawah ini…
SELECT * FROM brands
INNER JOIN products ON products.brand_id = brands.id
Dari query diatas akan menghasilkan data yang sesuai berdasarkan id relasinya masing-masing, dan produk yang brand_id
atau FOREIGN KEY
nya tidak sesuai maka tidak akan ditampilkan.
Berikut ini adalah contoh hasil dari query inner join diatas.
Kalau diperhatikan hasil data yang keluar tidak menampilkan semua data, seperti pada tabel brands tidak menampilkan merk Dell, dan Acer, serta pada tabel products tidak menampilkan Aspire dan Predator, itu dikarenakan mereka tidak memiliki relasi yang cocok.
Klausa Left Join
Left Join MySQL atau SQL pada umumnya digunakan untuk menggabungkan lebih dari satu tabel dengan cara memfokuskan data pada sisi kiri, dimana ketika data pada bagian kiri tidak memiliki relasi maka data tersebut akan tetap ditampilkan, namun data pada bagian kanan akan diabaikan dan hanya menampilkan NULL
untuk menutupi ketiadaan data.
Sebagai contoh coba jalankan perintah query SELECT
dibawah ini…
SELECT * FROM brands
LEFT JOIN products ON products.brand_id = brands.id
Hasilnya seperti gambar dibawah ini…
Jika diperhatikan hasil gambar diatas, pada brands
Dell dan Acer dibagian kanan yaitu tabel products
menampilkan NULL
untuk mengisi ketiadaan relasi, karena memang kedua merk tersebut tidak memiliki relasi produk.
Klausa Right Join
Kebalikannya dari Left Join, Right Join akan mengabaikan data bagian kiri apabila data bagian kanan tidak menemukan relasi yang cocok, maka pada bagian kiri akan menampilkan NULL
untuk mengisi ketiadaan data.
Karena Right Join akan fokus pada data bagian kanan maka semua data kanan akan ditampilkan walaupun tidak menemukan relasi pada tabel lainnya. Sebagai contoh jalankan query dibawah ini…
SELECT * FROM brands
RIGHT JOIN products ON products.brand_id = brands.id
Dari query diatas akan menampilkan data sebagai berikut…
Perhatikan data id
, dan name
pada bagian kanan, klausa Right Join akan tetap menampilkan data disisi kanan namun pada bagian kiri akan mendapat NULL
untuk mengisi ketiadaan data.
Klausa Cross Join
Cross Join di MySQL digunakan untuk menampilkan semua data pada masing-masing tabel yang digabungkan bahkan jika salah satu atau lebih tidak memiliki relasi, maka dengan cross join data-data tersebut akan saling mengisi satu sama lain hingga data terpenuhi.
Data yang dikeluarkan dengan metode Cross Join adalah hasil kombinasi dari tabel satu dengan yang lainnya, misalnya jika setiap tabel memiliki Y dan Z pada masing-masing barisnya, maka kumpulan hasil kombinasi dengan Cross Join akan menghasilkan Y x Z disetiap baris data.
Sebagai contoh silahkan gunakan query berikut ini…
SELECT * FROM brands
CROSS JOIN products
Dari query diatas akan menampilkan data berikut ini…
Sebagai catatan pada gambar diatas, penulis tidak menampilkan seluruh data karena keterbatasan layar. Yang diperlu diingat bahwa karena Cross Join akan mengisi seluruh data maka yang akan terjadi data yang dikeluarkan akan sangat banyak sehingga data masing-masing relasi akan terpenuhi.
Demikian tutorial join di MySQL ini, semoga dapat bermanfaat…