Dalam pengurusan pangkalan data, mendapatkan semula data hierarki selalunya memerlukan pertanyaan kompleks yang melibatkan algoritma rekursif. Satu senario sedemikian timbul apabila kita perlu mengekstrak semua nod induk entri tertentu dalam jadual hierarki seperti yang dibentangkan di atas.
Pertimbangkan jadual yang disediakan dengan hierarki item menu , di mana setiap nod mempunyai ID, tajuk dan ID induk. Matlamat kami adalah untuk mengambil semua nod induk entri dengan tajuk "Kategori" menggunakan satu pertanyaan MySQL.
Kami boleh menggunakan pertanyaan rekursif untuk melintasi jadual dan mengumpulkan nod induk pada setiap peringkat. Pertanyaan berikut menyelesaikannya:
SELECT T2.id, T2.title,T2.controller,T2.method,T2.url FROM ( SELECT @r AS _id, (SELECT @r := parent_id FROM menu WHERE id = _id) AS parent_id, @l := @l + 1 AS lvl FROM (SELECT @r := 31, @l := 0) vars, menu m WHERE @r <> 0) T1 JOIN menu T2 ON T1._id = T2.id ORDER BY T1.lvl DESC;
Menjalankan pertanyaan akan menghasilkan output yang diingini:
id | title | controller | method | url | parent_id |
---|---|---|---|---|---|
3 | Modules | admin | modules | (NULL) | 0 |
17 | User Modules | modules | user_module | (NULL) | 3 |
31 | Categories | categories | category | (NULL) | 17 |
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Cari Semua Nod Induk Entri Khusus dalam Hierarki MySQL Menggunakan Pertanyaan Tunggal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!