2014-04-21 43 views
1

基本上是一個連接匹配所有heirachy數據,我已經有了一個Heirarchal樹表Omiting上有一個一對多表

(按鈕)

id INT(11), 
name VARCHAR(80), 
parent_id INT(11), 
lft INT(11), 
rght INT(11) 

和一對一另一個表中的許多關係

(kiosk_buttons)

id INT(11), 
kiosk_id INT(11) "foreign key to kiosk table", 
button_id INT(11) "foreign key to buttons table" 

我一直在試圖忽略具有匹配卜行ttons.id和kiosk_buttons.button_id,同時也省略匹配行的子元素。

這是我現在有的查詢,它可以省略行但它不能省略它的子元素。

SELECT * 
FROM buttons as b 
LEFT JOIN kiosk_buttons as kb 
ON b.id = kb.button_id 
WHERE kb.button_id is NULL 

回答

0

對於遍歷和循環而言,SQL只是錯誤的概念,它是針對集合而設計的。所以,如果你有一個編程語言與數據的工作,你必須把穿越那裏,像你查詢的窗體,然後

SELECT * 
FROM buttons as b 
WHERE b.parent_id in (<last_button_list>) 

而任何結果顯示。使用這些數據並將button_ids的新列表設置爲。

但是,如果它讓你感到舒服:這種方式更容易處理數據,因爲整棵樹的線性列表是無用的。