选择“树”中包含全部五个的行

时间:2010-01-25 13:51:26

标签: sql sqlanywhere

我有两张桌子。一个是文章和另一个结构。文章可以看作是带有子节点的树等等。就像Windows窗体控件TreeView一样。

结构表基本上看起来是这样的:

  • 的article_id
  • article_above_id

文章:

  • 的article_id
  • article_number

我想从最多五篇article_ 数字中选择,并从中显示在树下有这些文章的文章。

article_number-data来自GUI,其中至少需要一个,如果没有输入则为null。

1 个答案:

答案 0 :(得分:0)

您可以选择五篇文章并加入他们的父文章,加入父文章,只获得有五篇儿童文章匹配的文章。

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。如果你把树翻过来,叶子挂在根下,你将不得不切换字段的使用。)