我有一个灯泡树结构。我想打开从树叶开始的所有灯泡。灯泡不能打开,除非它的所有直接子节点都打开。
树结构中节点之间的关系如表A所示:
表一:
node_id 整数
child_node_id 整数
表 B 表示树中的节点:
表乙:
id 整数
状态布尔值
表 B的状态表示状态 true = on 和 false = off。
问题:
我想选择所有已关闭且所有直系子项均已打开的灯泡。
这可能非常简单,但我似乎无法理解它。
我有一个灯泡树结构。我想打开从树叶开始的所有灯泡。灯泡不能打开,除非它的所有直接子节点都打开。
树结构中节点之间的关系如表A所示:
表一:
node_id 整数
child_node_id 整数
表 B 表示树中的节点:
表乙:
id 整数
状态布尔值
表 B的状态表示状态 true = on 和 false = off。
问题:
我想选择所有已关闭且所有直系子项均已打开的灯泡。
这可能非常简单,但我似乎无法理解它。
我会首先重新考虑设计。你只需要一张桌子:
使用问题中显示的布局,查询可以是:
这包括已关闭且根本没有子节点的节点。
要排除没有子节点的节点,请将第一个替换
LEFT JOIN
为普通的JOIN
.或者,可能更快: