在資料庫管理中,擷取分層資料通常需要涉及遞歸演算法的複雜查詢。當我們需要提取分層表中給定條目的所有父節點(如上面所示)時,就會出現這樣一種情況。
考慮提供的具有選單項目層次結構的表,其中每個節點都有一個 ID、標題和父 ID。我們的目標是使用單一 MySQL 查詢來取得標題為「Categories」的條目的所有父節點。
我們可以使用遞歸查詢來遍歷表並累積每個層級的父節點。以下查詢完成此操作:
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;
執行查詢將產生所需的輸出:
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 |
以上是如何使用單一查詢來尋找 MySQL 層次結構中特定條目的所有父節點?的詳細內容。更多資訊請關注PHP中文網其他相關文章!