2014-04-21 12 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的新列表设置为。

但是,如果它让你感到舒服:这种方式更容易处理数据,因为整棵树的线性列表是无用的。