Pertanyaan Hierarki dalam MySQL: Melintasi Ancestry dengan Depth-First Search
Menentukan perhubungan keturunan dalam data hierarki ialah tugas biasa dalam pengurusan pangkalan data. Dalam MySQL, pertanyaan hierarki membolehkan anda menavigasi dan mendapatkan semula data daripada struktur bersarang dengan berkesan.
Andaikan anda mempunyai jadual bernama 'mytable' dengan dua lajur, 'a' dan 'b,' mewakili hierarki ibu bapa-anak perhubungan:
| a | b | ---------- | 1 | 2 | | 2 | 3 | | 3 | 4 | | 4 | 5 | | 3 | 6 | | 4 | 7 |
Pertimbangkan senario di mana anda ingin mendapatkan semula semua nenek moyang yang diberikan nod, sebagai contoh, mencari semua ibu bapa, datuk dan nenek, dan seterusnya, nod 5.
Penyelesaian utilizzando l'algoritmo di ricerca dalam profondità:
MySQL menyediakan penyelesaian pertanyaan hierarki menggunakan pendekatan carian pertama mendalam (DFS). Berikut ialah pertanyaan yang menyelesaikannya:
SELECT @id := ( SELECT senderid FROM mytable WHERE receiverid = @id ) AS person FROM ( SELECT @id := 5 ) vars STRAIGHT_JOIN mytable WHERE @id IS NOT NULL
Analisis:
Dengan melaksanakan pertanyaan ini, anda akan mendapatkan semula senarai nenek moyang untuk nod 5: 4, 3, 2, dan 1. Kaedah ini merentasi hierarki dengan berkesan menggunakan pendekatan DFS, membolehkan anda untuk navigasi struktur ibu bapa-anak yang kompleks dalam pangkalan data MySQL anda.
Atas ialah kandungan terperinci Bagaimanakah Carian Pertama Kedalaman MySQL Berkesan Mendapatkan Semua Nenek Moyang Nod dalam Struktur Hierarki?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!