构造一个SQL语句,以两个级别深度显示,而不是一个向上

时间:2011-04-24 19:30:42

标签: sql

SELECT parent.name 
FROM categories AS node,
categories AS parent,
categories AS parent1
WHERE node.left_node > parent.left_node AND node.right_node < parent.right_node AND parent.left_node > parent1.left_node AND < parent.right_node > parent1.right_node
AND node.name = '{$node_name}'
ORDER BY parent.right_node DESC

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

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

当樱桃被召唤时,我想把RED称为Or Fruit。为此,我创建了三级AS节点,parent和parent1。根据其在右侧和左侧的值进行条件。我想只在那里提取那些字段。在node.left_node&gt; parent.left_node AND node.right_node&lt; parent.right_node AND parent.left_node&gt; parent1.left_node AND&lt; parent.right_node&gt; parent1.right_node AND node.name ='{$ node_name}'。

在这种情况下,不知道条件是否正确,因为它在上面的查询中引发致命错误。

任何意见?

1 个答案:

答案 0 :(得分:0)

在原始查询中,您只需进行以下修改:

SELECT parent1.name
FROM categories AS node,
categories AS parent,
categories AS parent1
WHERE node.left_node > parent.left_node AND node.right_node < parent.right_node
  AND parent.left_node > parent1.left_node AND parent.right_node < parent1.right_node
  AND node.name = '{$node_name}'
ORDER BY parent.right_node DESC