构造一个SQL语句以按深度显示

时间:2011-04-24 17:30:05

标签: sql

"SELECT parent.name 
FROM categories AS node,
categories AS parent
WHERE node.left_node BETWEEN parent.left_node AND parent.right_node
AND node.name = '{$node_name}'
ORDER BY parent.right_node AND node.left_node"

上面的查询将显示所调用节点根目录的所有父节点。我只想获得下一个父节点,而不是一直到根节点,而只是上面的节点。例如,在下图中

http://img97.imageshack.us/img97/7139/fruittree.gif

如果我打电话给RED语句会拉水果和食物,但我想构建查询只将下一个节点拉到RED只有“Fruit”,不需要根节点“Food”。

1 个答案:

答案 0 :(得分:0)

你可以利用任何节点留下的值大于它的父节点(或正确值小于其父节点)的事实,并使用limit来返回你想要的值。

ORDER BY parent.left_node desc
LIMIT 1

这是mysql synax,我不确定你正在使用什么rdbms。

在我看来,似乎有更好的方法。