Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Mengambil Folder Kanak-kanak Hierarki secara Rekursif dalam MySQL dengan Tahap Berbeza-beza?

Bagaimana untuk Mengambil Folder Kanak-kanak Hierarki secara Rekursif dalam MySQL dengan Tahap Berbeza-beza?

Barbara Streisand
Barbara Streisandasal
2024-11-01 17:11:30428semak imbas

How to Recursively Retrieve Hierarchical Child Folders in MySQL with Varying Levels?

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:

  1. Ia memulakan pembolehubah tersuai @pv dengan 'idFolder' folder sasaran (dalam kes ini, 5).
  2. Pertanyaan dalaman secara rekursif mencari semua nilai 'idFolder' kanak-kanak yang mempunyai @pv sebagai ibu bapa mereka.
  3. Hasilnya dikumpulkan dan digabungkan, dipisahkan dengan koma, untuk membentuk rentetan yang mengandungi nilai 'idFolder' bagi semua folder kanak-kanak dan anak kecil.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn