2014-12-11 45 views
-2

我有这个表design.I想要得到他的指定的parentid所有的孩子,但我在如何筛选有问题并得到他的所有donwline孩子检索所有患儿特定的parentid

CREATE TABLE `treetbl` (
    `id` INT(11) NOT NULL AUTO_INCREMENT, 
    `parentid` INT(11) NOT NULL DEFAULT '0', 
    `lft` INT(11) NOT NULL DEFAULT '0', 
    `rgt` INT(11) NOT NULL DEFAULT '0', 
    PRIMARY KEY (`id`) 
) 

treetbl

id  parentid  lft  rgt 

1  1    1  1 

2  5    6  7 

3  7    8  9 

这里是我的查询检索一个完整的树

SELECT node.parentid,node.lft,node.rgt 
FROM treetbl AS node, 
     treetbl AS parent 
WHERE node.lft BETWEEN parent.lft AND parent.rgt 

ORDER BY node.lft; 

但我很困惑如何筛选残缺的示例5以获得他所有的失望儿童。

预先感谢您。

回答

-1

如果我理解正确,您只想选择具有parentid = 5的记录。 对吗?

如果是这样,你说,这对你的作品与所有条目:

SELECT node.parentid,node.lft,node.rgt FROM treetbl AS node, treetbl AS parent 
WHERE node.lft BETWEEN parent.lft AND parent.rgt ORDER BY node.lft; 

,那么为什么不只是添加parentid = 5AND声明它的帮助吗?就像这样:

SELECT node.parentid,node.lft,node.rgt FROM treetbl AS node, treetbl AS parent 
WHERE parentid = 5 AND node.lft BETWEEN parent.lft AND parent.rgt 
ORDER BY node.lft; 

当然,你可以更改硬编码5一些$parentID PHP变量。

+0

它只会显示5,6,7 8和9不是8,9是儿童5的 – ashTon 2014-12-11 02:29:19

+1

是的,它会的。因为你只想显示“parentid = 5”的元素,不是吗?如果没有,请扩展您的问题,以便我更好地理解它。 – PolGraphic 2014-12-11 02:34:47

-1

也许这是你在找什么

SELECT * FROM (SELECT node.parentid,node.lft,node.rgt 
FROM treetbl AS node, 
    treetbl AS parent 
WHERE node.lft BETWEEN parent.lft AND parent.rgt 

ORDER BY node.lft)A Where A.parentid>=5 ; 

让我知道,如果我错了

相关问题