Self join
Termasuk bagian Dasar-Dasar dalam perjalanan SQL di Coddy. Pelajaran 46 dari 72.
Self-join adalah jenis join yang berbeda. Sejauh ini, kita telah membahas join beberapa tabel, tetapi self-join menggabungkan sebuah tabel dengan tabel yang sama. Contoh klasiknya adalah tabel karyawan.
| employee_id | employee_name | manager_id |
| 1 | Minke | 2 |
| 2 | Temur | 3 |
| 3 | Tatjana | 4 |
| 4 | Marinela |
Setiap karyawan memiliki manajer, kecuali manajer tertinggi, dan setiap manajer juga merupakan karyawan.
Masalahnya: Untuk setiap karyawan, kita ingin mengetahui nama manajernya.
SELECT e2.employee_id, e2.employee_name, e1.employee_name as manager_name
FROM employees as e1
JOIN employees as e2 ON e1.employee_id = e2.manager_idKita menggabungkan tabel yang sama, tetapi satu kali kita menyebutnya e1 dan kali kedua menyebutnya e2. Penggabungan dilakukan antara kolom employee_id dan manager_id.
Hasilnya:
| employee_id | employee_name | manager_name |
|---|---|---|
| 1 | Minke | Temur |
| 2 | Temur | Tatjana |
| 3 | Tatjana | Marinela |
Tantangan
SedangTabel dan kolom yang tersedia:
friends:id,name,friend_id
Temukan pasangan teman yang saling berteman (pertemanan timbal balik terjadi ketika friend_id milik orang A menunjuk ke orang B DAN friend_id milik orang B menunjuk ke orang A). Tampilkan nama kedua teman dalam satu baris. Beri nama kolomnya friend1 dan friend2.
Catatan: Sertakan kriteria f1.id < f2.id dalam klausa WHERE (f1 dan f2 adalah alias untuk dua salinan tabel) agar pasangan yang sama tidak muncul lebih dari sekali
Coba sendiri
-- Gabungkan tabel dengan dirinya sendiri agar satu baris dapat menampilkan dua orang yang berbeda
SELECT ____ AS friend1, ____ AS friend2
FROM friends f1
JOIN friends f2 ON ____
-- Pertahankan hanya pasangan yang saling merujuk
WHERE ____ AND f1.id < f2.id;Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Dasar-Dasar
4Kata Kunci Lainnya
Kata kunci INKata kunci BETWEENKata kunci LIKEKata kunci ASRangkuman: Model Ponsel2Kondisi
Dasar KondisiKata Kunci ANDKata Kunci ORKata Kunci NOTMenggabungkan Beberapa KondisiTanda KurungNilai Boolean3Format Pengembalian Khusus
Nilai nullUrutkan Hasil Bagian 1Urutkan Hasil Bagian 2Ulasan: Perusahaan Keamanan SiberBatasi Jumlah RecordUlasan: Pabrik Kendaraan6Tantangan Pengantar
Ulasan: Pemilihan ParlemenUlasan: Polisi Menangkap Pelaku KejahatanUlasan: Wadah Minuman BarUlasan: Insinyur Membuat Kolom BaruLatihan sendiri: Playground SQL