我試圖從MySQL
只有一個查詢獲得第一個類別(級別0,沒有父母)從一個子類別(可能是任何級別)。那可能嗎?PHP&MySQL - 只用一個查詢即可獲得頂級類別
下面是一個例子DB
結構:
Table categories
id (INT 11)
parent (INT 11, zero if it has no parent)
name
編輯:請問MPTT
是一個容易解決的問題?
我試圖從MySQL
只有一個查詢獲得第一個類別(級別0,沒有父母)從一個子類別(可能是任何級別)。那可能嗎?PHP&MySQL - 只用一個查詢即可獲得頂級類別
下面是一個例子DB
結構:
Table categories
id (INT 11)
parent (INT 11, zero if it has no parent)
name
編輯:請問MPTT
是一個容易解決的問題?
這是不可能的掃描無限的水平,只有一個查詢,但如果你確信你的categoies樹不走超過一定數量級別的更深一些,你可以使用這一招,這是4個級別:
SELECT COALESCE(c4.parent, c3.parent, c2.parent, c1.parent)
FROM categories AS c1
LEFT JOIN categories AS c2 ON(c1.parent = c2.id)
LEFT JOIN categories AS c3 ON(c2.parent = c3.id)
LEFT JOIN categories AS c4 ON(c3.parent = c4.id)
WHERE c1.id = {someID}
'top'類是如何定義的?空父母? –
@AleksG它被定義爲'0'(整數)。 – yoda
我懷疑你不能用一個簡單的查詢來做到這一點。你應該可以編寫一個存儲函數來完成這個工作 - 然後使用代碼中的一個選擇來調用該函數。 –