2014-12-11 40 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 ; 

讓我知道,如果我錯了

相關問題