我有两张桌子。一种是文章,另一种是结构。并且文章可以被视为具有子节点等的树。就像 Windows 窗体控件 TreeView。
结构表基本上是这样的:
- article_id
- article_above_id
文章:
- article_id
- 文章编号
我想从最多五个 article_ number中选择,并从中显示在树中具有这些文章的文章。
article_number-data 来自一个 GUI,其中至少需要一个,如果没有输入,则为空。
我有两张桌子。一种是文章,另一种是结构。并且文章可以被视为具有子节点等的树。就像 Windows 窗体控件 TreeView。
结构表基本上是这样的:
文章:
我想从最多五个 article_ number中选择,并从中显示在树中具有这些文章的文章。
article_number-data 来自一个 GUI,其中至少需要一个,如果没有输入,则为空。
您可以选择五篇文章并加入其父文章,对父文章进行分组并仅获取与子文章有五个匹配的文章。
select p.article_id
from Article a
inner join Structure s on s.article_above_id = article_id
inner join Article p on p.article_id = s.article_id
where a.article_number in (3,7,45,186,203)
group by p.article_id
having count(*) = 5
(注意:我用结构表中的“above”字段来表示树中的上面,即子项的id。如果你把树倒过来,叶子挂在根下,你将不得不切换字段的使用。)