Menu
CoddyTech

Self join

Termasuk bagian Dasar-Dasar dalam perjalanan SQL di Coddy. Pelajaran 46 dari 72.

Self-join adalah jenis join yang berbeda. Sampai sekarang, kita membahas join beberapa tabel, tetapi self-join menggabungkan tabel dengan tabel yang sama. Contoh klasiknya adalah tabel karyawan.

employee_idemployee_namemanager_id
1Minke2
2Temur3
3Tatjana4
4Marinela 

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_id

Kita menggabungkan tabel yang sama, tetapi satu kali kita menyebutnya e1 dan kedua kalinya e2. Penggabungan dilakukan antara kolom employee_id dan manager_id.

Hasilnya:

employee_idemployee_namemanager_name
1MinkeTemur
2TemurTatjana
3TatjanaMarinela
challenge icon

Tantangan

Sedang

Tabel dan kolom yang tersedia:

  • friends: id, name, friend_id

Temukan pasangan teman yang saling berteman (pertemanan timbal balik terjadi ketika friend_id orang A menunjuk ke orang B DAN friend_id orang B menunjuk ke orang A). Tampilkan nama kedua teman dalam satu baris. Namai kolomnya friend1 dan friend2.

Catatan: Sertakan kriteria friend1.id < friend2.id dalam klausa WHERE agar tidak menyertakan pasangan duplikat 

Coba sendiri

-- Gabungkan tabel dengan dirinya sendiri agar satu baris dapat menampilkan dua orang berbeda
SELECT ____ AS friend1, ____ AS friend2
FROM friends f1
JOIN friends f2 ON ____
-- Ambil hanya pasangan yang saling menunjuk
WHERE ____ AND f1.id < f2.id;
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Dasar-Dasar

Latihan sendiri: Playground SQL