Rumah >pangkalan data >SQL >Bagaimanakah saya menggunakan diri sendiri di SQL?
Joins diri di SQL digunakan apabila anda ingin menyertai jadual untuk dirinya sendiri, seolah-olah ia adalah dua jadual berasingan. Teknik ini amat berguna apabila jadual mengandungi data yang mempunyai hubungan dengan data lain dalam jadual yang sama. Untuk melaksanakan diri sendiri, anda merawat jadual yang sama dengan dua jadual dengan memberi mereka alias yang berbeza.
Berikut adalah panduan langkah demi langkah mengenai cara melaksanakan diri sendiri:
employees
, anda mungkin menggunakan e1
dan e2
sebagai alias.employees
, di mana manager_id
adalah kunci asing kepada employee_id
.<code class="sql">SELECT e1.employee_id, e1.name AS employee_name, e2.name AS manager_name FROM employees e1 LEFT JOIN employees e2 ON e1.manager_id = e2.employee_id;</code>
Dalam pertanyaan ini, e1
mewakili pekerja, dan e2
mewakili pengurus. Keadaan gabungan menghubungkan manager_id
dari e1
ke employee_id
dalam e2
, dengan berkesan memetakan pekerja kepada pengurus masing -masing.
Joins sendiri menawarkan beberapa kelebihan dalam pertanyaan SQL:
Ya, diri sendiri adalah cara yang berkesan untuk mewakili data hierarki dalam SQL. Struktur data hierarki sering melibatkan hubungan ibu bapa dan kanak-kanak di mana penyertaan dalam jadual merujuk kembali kepada entri lain dalam jadual yang sama. Joins sendiri sesuai untuk senario sedemikian kerana mereka membolehkan anda melintasi hubungan ini.
Sebagai contoh, pertimbangkan categories
jadual yang mewakili struktur hierarki seperti pokok kategori:
<code class="sql">CREATE TABLE categories ( category_id INT PRIMARY KEY, name VARCHAR(100), parent_id INT, FOREIGN KEY (parent_id) REFERENCES categories(category_id) ); INSERT INTO categories (category_id, name, parent_id) VALUES (1, 'Electronics', NULL), (2, 'Computers', 1), (3, 'Laptops', 2), (4, 'Desktops', 2);</code>
Untuk mengambil struktur hierarki menggunakan diri sendiri, anda boleh menanyakan seperti berikut:
<code class="sql">SELECT c1.name AS category, c2.name AS parent_category FROM categories c1 LEFT JOIN categories c2 ON c1.parent_id = c2.category_id;</code>
Pertanyaan ini akan mengeluarkan setiap kategori bersama dengan kategori induknya, dengan berkesan memaparkan hierarki.
Semasa melaksanakan diri sendiri, penting untuk mengelakkan beberapa kesilapan yang sama untuk memastikan ketepatan dan prestasi pertanyaan anda:
NULL
. Sentiasa mengambil kira nilai -nilai NULL
ini menggunakan gabungan LEFT
, RIGHT
, atau FULL
yang sesuai.Dengan mengelakkan perangkap-perangkap yang sama ini, anda boleh menggunakan join diri dengan berkesan dan cekap untuk mengurus dan menanyakan data hubungan dan hierarki dalam jadual yang sama.
Atas ialah kandungan terperinci Bagaimanakah saya menggunakan diri sendiri di SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!