Pertanyaan MySQL Rekursif untuk Mendapatkan Kembali Folder Kanak-Kanak Hierarki dengan Tahap Berbeza
Apabila mengurus struktur data hierarki, seperti folder bersarang atau perhubungan seperti pokok , mencari semua kanak-kanak dan potensi keturunan mereka boleh mencabar. Artikel ini membentangkan pertanyaan MySQL yang menangani keperluan ini secara berkesan dengan merentasi jadual 'Folder' hierarki secara rekursif.
Jadual 'Folder' yang digunakan dalam contoh ini mempunyai tiga lajur: 'idFolder', 'FolderName' dan ' idFolderParent', yang mewakili hubungan ibu bapa-anak. Matlamatnya adalah untuk mengambil semua folder kanak-kanak, termasuk folder anak kecil, untuk 'idFolder' yang diberikan dalam satu pertanyaan.
Salah satu cabaran yang dihadapi oleh penyelesaian terdahulu ialah mengendalikan kes di mana folder induk tidak disimpan dalam spesifik pesanan dalam pangkalan data. Untuk mengatasinya, kami mencadangkan pertanyaan yang bergantung pada fungsi GROUP_CONCAT() dan pembolehubah tersuai.
Pertanyaan:
SELECT GROUP_CONCAT(lv SEPARATOR ',') FROM ( SELECT @pv:=(SELECT GROUP_CONCAT(idFolder SEPARATOR ',') FROM Folder WHERE FIND_IN_SET(idFolderParent, @pv)) AS lv FROM Folder JOIN (SELECT @pv:=5) tmp ) a;
Pertanyaan ini berfungsi seperti berikut:
Pendekatan ini memastikan bahawa semua folder kanak-kanak dan folder anak kecil diambil semula tanpa mengira kedudukannya dalam struktur hierarki, menyediakan senarai komprehensif untuk nilai 'idFolder' yang diberikan.
Atas ialah kandungan terperinci Bagaimana untuk Mengambil Folder Kanak-kanak Hierarki secara Rekursif dalam MySQL dengan Tahap Berbeza-beza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!