MySQL - Full Join

Hai penggemar basis data yang sedang belajar! Hari ini, kita akan melihat dunia yang menarik MySQL dan menjelajahi alat yang 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, sama 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 mulai petualangan belajar ini bersama!

MySQL - Full Join

Apa Itu Full Join?

Sebelum kita masuk 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 adalah seperti menggabungkan daftar ini sedemikian rupa sehingga mencakup semua orang dari kedua daftar, bahkan jika mereka hanya muncul 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 di tabel lainnya.

Sinkronisasi

Ini adalah sinkronisasi 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, tapi jangan khawatir - kita memiliki solusi cerdik menggunakan UNION. Mari kita jelajahi ini secara rinci.

MySQL Full Join (Menggunakan UNION)

Karena MySQL tidak memiliki Full JOIN bawaan, kita dapat mensimulasikannya 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:

  1. Kita melakukan LEFT JOIN untuk mendapatkan semua baris dari table1, bersama dengan baris yang cocok dari table2.
  2. Kita kemudian UNION ini dengan RIGHT JOIN, yang mendapatkan semua baris dari table2, bersama dengan baris yang cocok dari table1.
  3. 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 mengelola perpustakaan kecil, dan kita memiliki dua tabel: books dan borrowers.

Pertama-tama, 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;

Query 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 - ia memberikan kita gambaran lengkap tentang data kita, menyorot baik kesamaan maupun perbedaan antara tabel kita.

Full Join dengan klausa WHERE

kadang-kadang, kita mungkin ingin menyaring hasil Full Join kita. Kita dapat melakukan ini dengan menambah klausa WHERE ke query 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;

Query 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 itu adalah, teman-teman saya! Kita telah berpetualang melalui dunia Full Joins di MySQL, dari memahami konsepnya hingga mengimplementasikannya 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 ketika Anda perlu melihat semua data dari tabel-tabel yang berbeda, tanpa menghiraukan apakah ada nilai yang cocok antar mereka. Mereka seperti teman yang inklusif di pesta yang memastikan bahwa semua orang terlibat, baik mereka mengenal satu sama lain atau tidak!

Sebagai Anda terus menjelajahi MySQL, teruslatih dengan berbagai jenis konteks. Semakin Anda bermain dengan konsep ini, semakin nyaman Anda akan menjadi. Dan siapa tahu? Anda mungkin menjadi ahli basis data yang disukai di kalangan teman-teman Anda!

Selamat coding, dan semoga query Anda selalu mengembalikan hasil yang Anda inginkan!

Credits: Image by storyset