Cantuman Kendiri dan Alias
Cantumkan jadual dengan dirinya sendiri menggunakan alias untuk membandingkan baris dalam jadual yang sama (pekerja dan pengurus, tarikh dan tarikh sebelumnya).
Cantuman Kendiri dan Alias ialah pelajaran SQL Academy percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran SQL Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus SQL Academy merangkumi sejumlah 4 pelajaran.
JOIN Kendiri: Menggabungkan Jadual dengan Dirinya Sendiri
Kadangkala hubungan itu berada dalam satu jadual:
- Pekerja ↔ Pengurus (pengurus ialah seorang pekerja)
- Komen berantai (setiap komen mempunyai parent_id)
- Graf persahabatan (pengguna ↔ pengguna)
Persediaan
Jadual employees dengan FK yang merujuk kepada jadual itu sendiri:
CREATE TABLE employees (
id BIGSERIAL PRIMARY KEY,
full_name TEXT NOT NULL,
manager_id BIGINT REFERENCES employees(id)
);Menggabungkan Pekerja dengan Pengurus Mereka
Berikan nama samaran yang berbeza kepada setiap tika:
SELECT e.full_name AS employee, m.full_name AS manager
FROM employees e
JOIN employees m ON m.id = e.manager_id;Tanpa Nama Samaran, Kueri Tidak Dapat Dikompil
Tanpa nama samaran, anda tidak dapat menentukan full_name yang dimaksudkan. Setiap rujukan menjadi kabur:
-- ERROR: column reference "full_name" is ambiguous
SELECT full_name FROM employees JOIN employees ON ...LEFT JOIN untuk Pekerja Tahap Atas
INNER JOIN menggugurkan pekerja yang tidak mempunyai pengurus, contohnya CEO. Gunakan LEFT JOIN untuk mengekalkan 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;Komen Berantai
Paparkan setiap komen bersama 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 Gabungan
Cari pasangan produk yang muncul dalam pesanan yang sama, tanpa pasangan (A,B) dan (B,A) yang diduplikasi:
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 Bersebelahan
JOIN kendiri pada versi "terdahulu" sesuatu 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;JOIN Kendiri berbanding Fungsi Tetingkap
Untuk banyak tugas "membandingkan setiap baris dengan baris sebelumnya", fungsi tetingkap (LAG) lebih mudah dan pantas berbanding JOIN kendiri. Perkara ini diterangkan dalam Pendalaman Fungsi Tetingkap.
JOIN Kendiri Rekursif
Perlu menelusuri N aras ke bawah, seperti carta organisasi atau pepohon komen? Gunakan CTE rekursif — perkara ini diterangkan dalam Subkueri dan CTE.
Mengindeks Lajur FK
Sentiasa tambahkan indeks pada lajur FK yang merujuk kepada dirinya sendiri. Tanpanya, JOIN mengimbas seluruh jadual bagi setiap carian induk.
CREATE INDEX employees_manager_idx ON employees(manager_id);Ringkasan
Cantuman kendiri mengendalikan hubungan dalam satu jadual.
- Dua alias untuk dua salinan maya
- LEFT JOIN untuk mengekalkan akar / baris peringkat atas
- Indekskan lajur FK
- Fungsi tetingkap boleh memudahkan corak "baris sebelumnya"
Semakan Pantas
Anda mencantumkan employees dengan dirinya sendiri untuk mencari pengurus setiap pekerja. Mengapakah alias diperlukan?
Pelajari SQL dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 46
- Pelajaran
- 183
Soalan Lazim
Adakah pelajaran “Cantuman Kendiri dan Alias” percuma?
Ya — teks penuh “Cantuman Kendiri dan Alias” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus SQL Academy, tingkat taraf kepada CoddyKit PRO. Kursus SQL Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Cantuman Kendiri dan Alias”?
Cantumkan jadual dengan dirinya sendiri menggunakan alias untuk membandingkan baris dalam jadual yang sama (pekerja dan pengurus, tarikh dan tarikh sebelumnya). Anda berlatih SQL Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan SQL Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran SQL Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.
Berapa lamakah pelajaran “Cantuman Kendiri dan Alias” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran SQL Academy ini?
Ya. Setiap pelajaran SQL Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Mengapa JOIN Penting (Imbas Kembali Model Hubungan)
- Mekanisme INNER JOIN
- LEFT/RIGHT JOIN dan Cantuman OUTER
- Cantuman Kendiri dan Alias