MySQL - Full Join (ID)
Halo sana, para entusiastik basis data yang sedang berkembang! Hari ini, kita akan masuk ke dunia menarik MySQL dan mengexplorekan alat kuat dalam peralatan SQL kita: Full Join. Jangan khawatir jika Anda baru belajar pemrograman; saya akan mengarahkan Anda melalui konsep ini secara langkah demi langkah, seperti yang saya lakukan untuk ribuan murid selama tahun-tahun mengajar saya. Jadi, ambil secangkir kopi (atau teh, jika itu preferensi Anda), dan mari kita embarkasi pada petualangan belajar ini bersama!
Apa Itu Full Join?
Sebelum kita melompat ke detil Full Joins di MySQL, mari kita mulai dengan analogi sederhana. Bayangkan Anda sedang merencanakan pesta, dan Anda memiliki dua daftar tamu: satu dari teman terbaik Anda dan satu dari saudara Anda. Full Join seperti menggabungkan daftar ini sedemikian rupa bahwa mencakup semua orang dari kedua daftar, bahkan jika mereka muncul hanya di salah satu daftar.
Dalam istilah basis data, Full Join menggabungkan baris dari dua atau lebih tabel berdasarkan kolom yang terkait antaranya, mencakup semua baris dari semua tabel, bahkan jika tidak ada kesamaan dalam tabel lainnya.
Sintaks
Ini adalah sintaks dasar untuk Full Join dalam SQL:
SELECT columns
FROM table1
FULL JOIN table2
ON table1.column = table2.column;
Sekarang, saya hampir mendengar Anda mengatakan, "Tunggu! MySQL tidak memiliki kata kunci FULL JOIN!" Dan Anda benar! MySQL tidak mendukung secara langsung FULL JOIN, tetapi jangan khawatir – kita memiliki solusi pintar menggunakan UNION. Mari kita telusuri ini secara detil.
MySQL Full Join ( Menggunakan UNION)
Karena MySQL tidak memiliki Full JOIN bawaan, kita dapat mensimulasinya menggunakan kombinasi LEFT JOIN dan RIGHT JOIN dengan UNION. Ini adalah cara kerjanya:
SELECT t1.column1, t1.column2, t2.column1, t2.column2
FROM table1 t1
LEFT JOIN table2 t2 ON t1.id = t2.id
UNION
SELECT t1.column1, t1.column2, t2.column1, t2.column2
FROM table1 t1
RIGHT JOIN table2 t2 ON t1.id = t2.id;
Mari kitauraikan ini:
- Kita melakukan LEFT JOIN untuk mendapatkan semua baris dari table1, bersama dengan baris yang cocok dari table2.
- Kemudian kita UNION ini dengan RIGHT JOIN, yang mendapatkan semua baris dari table2, bersama dengan baris yang cocok dari table1.
- UNION menggabungkan hasil ini, secara efektif memberikan kita Full JOIN.
Contoh Praktis
Untuk membuat ini lebih nyata, mari kita gunakan contoh dunia nyata. Bayangkan kita sedang mengelola perpustakaan kecil, dan kita memiliki dua tabel: books
dan borrowers
.
Pertama, mari kita buat tabel ini:
CREATE TABLE books (
book_id INT PRIMARY KEY,
title VARCHAR(100),
author VARCHAR(100)
);
CREATE TABLE borrowers (
borrower_id INT PRIMARY KEY,
book_id INT,
borrower_name VARCHAR(100)
);
INSERT INTO books VALUES (1, 'To Kill a Mockingbird', 'Harper Lee');
INSERT INTO books VALUES (2, '1984', 'George Orwell');
INSERT INTO books VALUES (3, 'Pride and Prejudice', 'Jane Austen');
INSERT INTO borrowers VALUES (1, 1, 'Alice');
INSERT INTO borrowers VALUES (2, NULL, 'Bob');
INSERT INTO borrowers VALUES (3, 4, 'Charlie');
Sekarang, mari kita melakukan Full Join:
SELECT b.book_id, b.title, br.borrower_id, br.borrower_name
FROM books b
LEFT JOIN borrowers br ON b.book_id = br.book_id
UNION
SELECT b.book_id, b.title, br.borrower_id, br.borrower_name
FROM books b
RIGHT JOIN borrowers br ON b.book_id = br.book_id;
Kueri ini akan memberikan hasil berikut:
book_id | title | borrower_id | borrower_name |
---|---|---|---|
1 | To Kill a Mockingbird | 1 | Alice |
2 | 1984 | NULL | NULL |
3 | Pride and Prejudice | NULL | NULL |
NULL | NULL | 2 | Bob |
NULL | NULL | 3 | Charlie |
mari kita analisis hasil ini:
- Kita melihat semua buku, bahkan yang tidak dipinjam (seperti '1984' dan 'Pride and Prejudice').
- Kita melihat semua peminjam, bahkan yang saat ini tidak meminjam buku (seperti Bob).
- Kita bahkan melihat Charlie, yang meminjam buku yang tidak ada di tabel
books
kita (book_id 4).
Ini adalah kekuatan Full Join – memberikan kita pandangan lengkap atas data kita, menyorot baik kesamaan maupun perbedaan antara tabel kita.
Full Join dengan klausal WHERE
kadang-kadang, kita mungkin ingin menyaring hasil Full Join kita. Kita dapat melakukan ini dengan menambah klausal WHERE ke kueri kita. Misalnya, mari kita katakan kita ingin menemukan semua buku yang saat ini tidak dipinjam:
SELECT b.book_id, b.title, br.borrower_id, br.borrower_name
FROM books b
LEFT JOIN borrowers br ON b.book_id = br.book_id
WHERE br.borrower_id IS NULL
UNION
SELECT b.book_id, b.title, br.borrower_id, br.borrower_name
FROM books b
RIGHT JOIN borrowers br ON b.book_id = br.book_id
WHERE b.book_id IS NULL;
Kueri ini akan mengembalikan:
book_id | title | borrower_id | borrower_name |
---|---|---|---|
2 | 1984 | NULL | NULL |
3 | Pride and Prejudice | NULL | NULL |
NULL | NULL | 2 | Bob |
NULL | NULL | 3 | Charlie |
Hasil ini menunjukkan:
- Buku yang saat ini tidak dipinjam ('1984' dan 'Pride and Prejudice')
- Peminjam yang saat ini tidak meminjam buku (Bob)
- Peminjam yang meminjam buku yang tidak ada di tabel
books
kita (Charlie)
Kesimpulan
Dan begitu saja, murid-murid tercinta! Kita telah berpetualangan melalui dunia Full Joins di MySQL, dari memahami konsepnya hingga implementasinya dengan contoh dunia nyata. Ingat, meskipun MySQL tidak memiliki Full JOIN bawaan, kita dapat mencapai hasil yang sama menggunakan kombinasi LEFT JOIN, RIGHT JOIN, dan UNION.
Full Joins sangat berguna saat Anda memerlukan semua data dari tabel-tabel beberapa, tanpa peduli apakah ada nilai yang cocok antaranya. Mereka seperti teman inklusif di pesta yang memastikan bahwa semua orang terlibat, baik mereka mengetahui satu sama lain ataukah tidak!
Buat terus berlatih dengan berbagai skenario. Semakin banyak Anda bermain dengan konsep ini, semakin nyaman Anda akan merasakan. Dan siapa tahu? Anda mungkin menjadi ahli basis data yang dicari di antara teman Anda!
Semangat coding, dan semoga kueri Anda selalu mengembalikan hasil yang Anda inginkan!
Credits: Image by storyset