我正在尋找一個非遞歸解決方案來做一個MySQL查詢來選擇節點的所有葉子節點(子節點,孫子節點等),同時只知道節點的直接子節點是誰。有沒有什麼辦法讓我只用一個查詢來獲得一棵樹,而只知道父母的ID?
目前,我有如下表:
節點:
- ID(INT)
- 數據(VARCHAR)
關係:
- parentId的(INT)
- childID的(INT)
- childNodeOrder(INT)
我有它的方式目前我只能選擇一個父節點的直接子節點(此例如讓父ID = 1):
SELECT * FROM Nodes n
JOIN Relationships r ON r.childId = n.id
WHERE r.parentId = 1
ORDER BY r.childNodeOrder;
有什麼辦法,我周圍容易不改變這個數據庫使用遞歸調用(在我的服務器端代碼),並能夠獲得父級的所有後裔葉子?
我至今都看着像this one問題,這似乎是一個徹底的改變,而不是很容易切換...
你爲什麼只在表格中存儲直接關係? – Esailija
@Esailija這是我的問題,我該如何改變我的數據庫,使其對我需要做的更有用......? – Neal
所以問題是,你知道你的桌子被擰了,需要知道如何將其轉換爲合適的閉合表格格式? – Esailija