我有这个桌子设计。我想让他所有的孩子都在指定的parentid,但我在如何过滤和得到他所有的donwline孩子有问题
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;
但我很困惑如何过滤parentid示例5以获得他所有的孩子。
提前谢谢。
答案 0 :(得分:-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 = 5
语句的帮助下添加AND
呢?像这样:
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变量。
答案 1 :(得分:-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 ;
如果我错了,请告诉我