ID (Indonesia) Terjemahan
SQL - Self Join: Panduan Ramah untuk Pemula
Halo teman-teman yang sedang belajar SQL! Saya sangat senang menjadi panduan Anda dalam perjalanan menarik ini ke dunia SQL Self Joins. Sebagai seseorang yang telah mengajar ilmu komputer selama bertahun-tahun, saya telah melihat banyak "waktu 'aha!'" saat murid-muridku memahami konsep ini. Jadi, mari kita masuk dan buat sedikit magi SQL!
Apa Itu Self Join?
Sebelum kita masuk ke detailnya, mari kita mulai dengan analogi sederhana. Bayangkan Anda di acara reuni keluarga, dan Anda ingin membuat daftar semua hubungan orangtua-anak. Anda memiliki satu tabel besar anggota keluarga, tapi Anda perlu menghubungkan orang ke orangtua mereka dalam tabel yang sama. Itu sebenarnya apa yang dilakukan Self Join dalam SQL!
Self Join adalah saat sebuah tabel dihubungkan dengan dirinya sendiri. Itu seperti tabel itu sedang mencari refleksnya sendiri dan menghubungkannya. Suara agak aneh, kan? Jangan khawatir; semua akan bermakna segera!
Mengapa Menggunakan Self Join?
Self Joins sangat berguna saat Anda memiliki data hierarkis atau rekursif dalam satu tabel. Pikirkan tentang:
- Hubungan karyawan-manajer
- Pohon keluarga
- Bagian dan subbagian dalam manufaktur
- Tanggapan thread di forum
Self Join dalam Aksi SQL
Ayo buat contoh sederhana untuk mengilustrasikan bagaimana Self Join bekerja. Kita akan menggunakan tabel karyawan untuk demonstrasi ini.
Pertama, mari kita buat tabel kita:
CREATE TABLE karyawan (
employee_id INT PRIMARY KEY,
name VARCHAR(50),
manager_id INT
);
INSERT INTO karyawan (employee_id, name, manager_id)
VALUES
(1, 'John Doe', NULL),
(2, 'Jane Smith', 1),
(3, 'Bob Johnson', 1),
(4, 'Alice Brown', 2),
(5, 'Charlie Davis', 2);
Sekarang, mari kita katakan kita ingin mencantumkan setiap karyawan beserta nama manajer mereka. Ini tempat Self Join berguna:
SELECT
e1.name AS karyawan,
e2.name AS manajer
FROM
karyawan e1
LEFT JOIN
karyawan e2 ON e1.manager_id = e2.employee_id;
mari kitauraikan permintaan ini:
- Kita memilih dari tabel
karyawan
dua kali, memberikan aliase1
dane2
. -
e1
mewakili karyawan, dane2
mewakili manajer potensial. - Kita menggabungkan "dua" tabel ini berdasarkan syarat bahwa
e1
'smanager_id
sama dengane2
'semployee_id
. - Kita menggunakan LEFT JOIN untuk memastikan kita mendapatkan semua karyawan, bahkan mereka yang tanpa manajer.
Hasilnya akan tampak seperti ini:
karyawan | manajer |
---|---|
John Doe | NULL |
Jane Smith | John Doe |
Bob Johnson | John Doe |
Alice Brown | Jane Smith |
Charlie Davis | Jane Smith |
Bagus bukan? Dengan hanya satu permintaan, kita telah memetakan seluruh struktur manajemen perusahaan kecil kita!
Self Join dengan Clause ORDER BY
Sekarang, ayo tambahkan sedikit perisa ke permintaan kita dengan mengurutkan hasilnya. Mungkin kita ingin melihat karyawan yang diurutkan secara alfabetik:
SELECT
e1.name AS karyawan,
e2.name AS manajer
FROM
karyawan e1
LEFT JOIN
karyawan e2 ON e1.manager_id = e2.employee_id
ORDER BY
e1.name ASC;
Permintaan ini identik dengan permintaan sebelumnya, kecuali untuk penambahan clause ORDER BY
di akhir. Itu mengurutkan hasil kita secara alfabetik menurut nama karyawan.
Hasilnya sekarang akan tampak seperti ini:
karyawan | manajer |
---|---|
Alice Brown | Jane Smith |
Bob Johnson | John Doe |
Charlie Davis | Jane Smith |
Jane Smith | John Doe |
John Doe | NULL |
Jauh lebih baik! Sekarang kita dapat mudah mencari setiap karyawan dan manajer mereka.
Teknik Self Join Tingkat Lanjut
Siap untuk naik tingkat? Ayo mencoba sesuatu yang sedikit lebih kompleks. Apa bila kita ingin menemukan karyawan yang memiliki manajer yang sama?
SELECT
e1.name AS karyawan1,
e2.name AS karyawan2,
m.name AS manajer_bersama
FROM
karyawan e1
JOIN
karyawan e2 ON e1.manager_id = e2.manager_id AND e1.employee_id < e2.employee_id
JOIN
karyawan m ON e1.manager_id = m.employee_id;
Permintaan ini mungkin terlihat menakutkan, tapi mari kitauraikan:
- Kita menggabungkan tabel
karyawan
dengan dirinya sendiri dua kali (e1 dan e2) untuk membandingkan karyawan. - Syarat
e1.employee_id < e2.employee_id
memastikan kita tidak mendapatkan pasangan duplikat (seperti "Alice dan Bob" serta "Bob dan Alice"). - Kita menggabungkan untuk ketiga kalinya (m) untuk mendapatkan nama manajer.
Hasilnya mungkin tampak seperti ini:
karyawan1 | karyawan2 | manajer_bersama |
---|---|---|
Jane Smith | Bob Johnson | John Doe |
Alice Brown | Charlie Davis | Jane Smith |
Dan begitu juga! Kita telah menemukan karyawan yang memiliki manajer yang sama.
Kesimpulan
Self Joins mungkin tampak sulit pada awalnya, tapi mereka adalah alat yang sangat kuat dalam peralatan SQL Anda. Mereka memungkinkan Anda untuk mengquery data hierarkis secara efisien dan mengungkap hubungan dalam tabel tunggal.
Ingat, latihan membuat sempurna! Cobalah membuat tabel Anda sendiri dan eksperimen dengan berbagai permintaan Self Join. Sebelum Anda sadari, Anda akan menjadi ahli Self Join!
Semoga sukses menquery, para ahli SQL masa depan! Dan ingat, di dunia basis data, baiklah untuk berbicara kepada diri sendiri... Saya mean, bergabung dengan diri sendiri!
Credits: Image by storyset