繁体   English   中英

忽略与一对多表在JOIN上匹配的所有希拉希数据

[英]Omiting all heirachy data that matches on a JOIN with a one-to-many table

基本上,我有一个Hirarchal Tree Table

(纽扣)

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"

我一直在尝试省略具有匹配的button.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

SQL只是遍历和循环的错误概念,它是为集合而设计的。 因此,如果您要使用一种编程语言来处理数据,则必须以诸如Query之类的格式将遍历数据放置在那里。

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

结果显示出来。 处理该数据,并将新的button_ids列表设置为。

但是,如果让您感到满意:这样,使用数据就更容易了,因为带有整个树的线性列表是完全没有用的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM