2
我有MySQL表是這樣的:MySQL的:獲取使用PARENT_ID所有層級從表
id | name| parent_id
---+-----+-----------
1 | aaa | 0
2 | bbb | 1
3 | ccc | 2
4 | ddd | 3
5 | eee | 3
6 | fff | 1
7 | ggg | 0
8 | hhh | 7
9 | iii | 7
我需要創建一個查詢,將獲取所有層次爲給定ID。
例如:輸入= 1時,結果應該是這樣的:
id | name| parent_id
---+-----+-----------
1 | aaa | 0
2 | bbb | 1
3 | ccc | 2
4 | ddd | 3
5 | eee | 3
6 | fff | 1
例如:輸入= 7,結果應該是這樣的:
id | name| parent_id
---+-----+-----------
7 | ggg | 0
8 | hhh | 7
9 | iii | 7
我已經試過這樣的事情,但不知道如何着手。我不知道層次結構中有多少層。
SELECT t1.id, t1.name, t1.parent_id, t2.name AS parent_name
FROM parent_test t1
LEFT JOIN parent_test t2 ON t1.parent_id=t2.id
WHERE t1.id=1 OR t1.parent_id=1;
任何想法?
感謝您的回覆。如果我們不想使用這種lft-rght技術,可以通過較少的數據庫調用和較少的PHP處理,使用PHP-MySql組合來獲得這種結果嗎? – Awan
不是。使用嵌套集模型將其減少到最小數據庫調用和最小php處理讀取。否則,您正在使用遞歸處理來讀取通常非常慢的各種子記錄。 – Kickstart
@Awan,** no **。這就是遞歸查詢,一次只獲取一個圖層。 –