Pertanyaan rujukan kendiri menggunakan ungkapan jadual biasa rekursif (CTE) dalam Pelayan SQL
Pengenalan
Dalam pangkalan data hubungan, pertanyaan rujukan sendiri ialah teknik yang berkuasa untuk merentasi perhubungan hierarki dalam satu jadual. SQL Server menyediakan ungkapan jadual biasa (CTE) untuk tujuan ini, membolehkan pertanyaan rekursif yang cekap dan ekspresif.
Soalan
Pertimbangkan jadual "Kategori" yang dipermudahkan dengan lajur ID, Nama dan ParentId. Jadual menyokong hierarki kategori yang tidak tentu, seperti yang ditunjukkan dalam contoh berikut:
1 2 3 4 |
|
Matlamatnya ialah untuk membina pertanyaan yang bukan sahaja mendapatkan semula kategori tertentu (mis., "Komputer riba Perniagaan") tetapi juga menyediakan senarai yang dipisahkan koma bagi semua kategori induknya.
Penyelesaian: CTE Rekursif
Untuk menyelesaikan masalah ini, CTE rekursif boleh digunakan. CTE paling luar mentakrifkan titik permulaan rekursi, manakala istilah rekursif mentakrifkan logik hierarki lanjutan:
1 2 3 4 5 6 7 8 9 |
|
Pertanyaan
Untuk mendapatkan semula kategori yang ditentukan dan kategori induknya, kami menggunakan pertanyaan mudah:
1 2 3 |
|
Keputusan
Pertanyaan mengembalikan hasil berikut:
1 2 |
|
Dalam contoh ini, "Business Laptops" ialah anak kepada "Laptop" iaitu anak kepada "Business". Lajur Path menyediakan laluan hierarki lengkap kembali ke kategori akar.
Kesimpulan
CTE rekursif dalam SQL Server menyediakan cara yang elegan dan cekap untuk menavigasi perhubungan hierarki dalam jadual. Dengan memanfaatkan kuasa rekursi, pertanyaan kompleks boleh dibina untuk mengekstrak cerapan berharga daripada struktur data hierarki.
Atas ialah kandungan terperinci Bagaimanakah CTE Rekursif dalam SQL Server Dapat Mendapatkan Kategori dan Laluan Leluhurnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!