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…