Menyiasat Data Hierarki dalam MySQL tanpa "Connect By Prior"
Dalam MySQL, walaupun tiada klausa "Connect By Prior" yang jelas , adalah mungkin untuk mendapatkan semula data hierarki menggunakan gabungan rekursif teknik.
Algoritma Traversal Rekursif
Untuk melintasi jadual hierarki secara rekursif seperti tb_Tree, ikut langkah berikut:
Proses rekursif ini berterusan sehingga semua nod daun dikenal pasti.
Pendekatan Berasaskan Kedalaman
Jika anda tahu kedalaman maksimum pepohon, anda boleh menyertai jadual itu sendiri berulang kali untuk mencapai tahap paling dalam dan kemudian menapis sebarang nilai NULL yang tinggal.
Perwakilan Set Bersarang
Sebagai alternatif, anda boleh mengubah suai struktur jadual untuk menggunakan perwakilan set bersarang. Ini melibatkan penambahan lajur tambahan untuk mewakili sempadan kiri dan kanan setiap nod dalam hierarki.
Contoh Pertanyaan untuk Mendapatkan Kanak-Kanak
Untuk mendapatkan semula semua kanak-kanak dari nod tertentu dengan Id sama dengan X, anda akan menggunakan pertanyaan berikut:
SELECT * FROM tb_Tree WHERE ParentId IN ( SELECT Id FROM tb_Tree WHERE ParentId = X UNION ALL /* Recursive traversal of children */ SELECT Id FROM tb_Tree WHERE Id IN ( SELECT Id FROM tb_Tree WHERE ParentId = X ) );
Pertanyaan ini merentasi hierarki secara rekursif, mengumpulkan semua nilai Id yang dikaitkan dengan nod anak.
Atas ialah kandungan terperinci Bagaimana untuk Menyoal Data Hierarki dalam MySQL Tanpa CONNECT BY PRIOR?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!