2012-05-21 41 views
1

傍晚MySQL嵌套集合加入檢索路徑

我有兩個表格:網址爲&的地方。爲了簡化,數據是這樣的:

URLS:

urlID url 
1  /england 
2  /scotland 
3  /wales 

地方:

placeId name  lft rgt  urlRef 
1   England  1  23000  1 
2   Scotland 23001 37000  2 
3   Wales  37001 50000  3 

的地方臺則已經嵌套在國家內部進一步的地方。我希望能夠加入兩個表來選擇喜歡的我的地方的路徑:

England  /england 
Shropshire /england/shropshire 
Shrewsbury /england/shropshire/shrewsbury 

我第一次嘗試這樣,它不工作等各種方式也沒有吃。

SELECT node.name, url 
FROM places AS node, places AS parent LEFT JOIN urls ON urlId = node.urlRef 
WHERE node.lft BETWEEN parent.lft AND parent.rgt AND urlId = 1 
ORDER BY node.lft 
+0

SELECT node.name,網址 從URL中LEFT JOIN AS節點放在node.urlRef = urls.urlId,地方父 WHERE node.lft BETWEEN parent.lft和parent.rgt AND urlId = 46 ----這提供了一個結果,其結果數量正確,但所有結果都是相同的結果,而不是路徑。 –

+0

下面是答案: SELECT parent.name 從URL中LEFT JOIN AS節點上node.urlRef = urls.urlId地方,地方父 WHERE node.lft BETWEEN parent.lft和parent.rgt和node.urlRef = 46 –

回答

0

你需要加入的父節點上:

SELECT parent.placeId, parent.name, parent.type, parent.ico, url 
FROM places AS node, urls LEFT JOIN places AS parent ON parent.urlRef = urls.urlId 
WHERE node.lft BETWEEN parent.lft AND parent.rgt AND node.urlRef = :urlId 
ORDER BY parent.lft