1

URLと場所の2つのテーブルがあります。簡単にするために、データは次のようになります。

URL:

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

その場合、placesテーブルには、国の中にネストされた場所がさらにあります。2つのテーブルを結合して、次のような場所のパスを選択できるようにしたいと思います。

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
4

1 に答える 1

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
于 2012-05-22T14:16:21.607 に答える