0Pricing
SQL Academy · Pelajaran

Self-Join dan Alias

Gabungkan sebuah tabel dengan dirinya sendiri menggunakan alias untuk membandingkan baris dalam tabel yang sama (karyawan dan manajer, tanggal dan tanggal sebelumnya).

Self-Join dan Alias adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.

Self-Join: Menggabungkan Tabel dengan Dirinya Sendiri

Terkadang hubungan berada di dalam satu tabel:

  • Karyawan ↔ Manajer (manajer adalah seorang karyawan)
  • Komentar berutas (setiap komentar memiliki parent_id)
  • Graf pertemanan (pengguna ↔ pengguna)

Persiapan

Tabel employees dengan FK yang merujuk pada tabel itu sendiri:

CREATE TABLE employees (
  id BIGSERIAL PRIMARY KEY,
  full_name TEXT NOT NULL,
  manager_id BIGINT REFERENCES employees(id)
);

Menggabungkan Karyawan dengan Manajernya

Berikan alias yang berbeda untuk setiap instans:

SELECT e.full_name AS employee, m.full_name AS manager
FROM employees e
JOIN employees m ON m.id = e.manager_id;

Tanpa Alias, Kueri Tidak Akan Berhasil Dikompilasi

Tanpa alias, Anda tidak dapat mengetahui full_name yang dimaksud. Setiap rujukan menjadi ambigu:

-- ERROR: column reference "full_name" is ambiguous
SELECT full_name FROM employees JOIN employees ON ...

LEFT JOIN untuk Karyawan Tingkat Atas

INNER JOIN menghapus karyawan yang tidak memiliki manajer, misalnya CEO. Gunakan LEFT JOIN untuk mempertahankan mereka:

SELECT e.full_name AS employee, m.full_name AS manager
FROM employees e
LEFT JOIN employees m ON m.id = e.manager_id;

Komentar Berutas

Tampilkan setiap komentar beserta teks induknya:

SELECT c.id, c.body, p.body AS parent_body
FROM comments c
LEFT JOIN comments p ON p.id = c.parent_id;

Pasangan dan Kombinasi

Temukan pasangan produk yang muncul dalam pesanan yang sama tanpa pasangan (A,B) dan (B,A) yang duplikat:

SELECT a.id AS product_a, b.id AS product_b
FROM order_items a
JOIN order_items b
  ON a.order_id = b.order_id
 AND a.product_id < b.product_id;

Membandingkan Baris yang Berdekatan

Lakukan self-join pada versi "sebelumnya" dari suatu baris:

SELECT a.id, a.created_at, b.created_at AS prev_at
FROM events a
LEFT JOIN events b ON b.id = a.previous_id;

Self-Join vs Fungsi Jendela

Untuk banyak tugas "membandingkan setiap baris dengan baris sebelumnya", fungsi jendela (LAG) lebih sederhana dan lebih cepat daripada self-join. Materi ini dibahas dalam Pendalaman Fungsi Jendela.

Self-Join Rekursif

Perlu menelusuri hingga N tingkat, seperti struktur organisasi atau pohon utas? Gunakan CTE rekursif—materi ini dibahas dalam Subkueri dan CTE.

Mengindeks Kolom FK

Selalu tambahkan indeks pada kolom FK yang merujuk pada tabel itu sendiri. Tanpa indeks tersebut, penggabungan akan memindai seluruh tabel untuk setiap pencarian induk.

CREATE INDEX employees_manager_idx ON employees(manager_id);

Ringkasan

JOIN mandiri menangani hubungan di dalam satu tabel.

  • Dua alias untuk dua salinan virtual
  • LEFT JOIN untuk mempertahankan baris akar / tingkat teratas
  • Indeks kolom FK
  • Fungsi jendela dapat menyederhanakan pola "baris sebelumnya"

Pemeriksaan Singkat

Anda menggabungkan employees dengan dirinya sendiri untuk menemukan manajer setiap karyawan. Mengapa alias diperlukan?

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Self-Join dan Alias” gratis?

Ya — teks lengkap “Self-Join dan Alias” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Self-Join dan Alias”?

Gabungkan sebuah tabel dengan dirinya sendiri menggunakan alias untuk membandingkan baris dalam tabel yang sama (karyawan dan manajer, tanggal dan tanggal sebelumnya). Kamu berlatih SQL Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai SQL Academy?

Tidak diperlukan pengalaman sebelumnya. SQL Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Self-Join dan Alias” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Academy ini?

Ya. Setiap pelajaran SQL Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Mengapa JOIN (Pengulangan Model Relasional)
  2. Mekanisme INNER JOIN
  3. LEFT/RIGHT JOIN dan JOIN OUTER
  4. Self-Join dan Alias
← Kembali ke SQL Academy