2010-01-25 25 views
0

我有兩個表。一個是文章和另一個結構。這些文章可以被視爲一個帶有孩子節點的樹等等。像Windows窗體控件TreeView一樣。在「樹」中選擇其下面全部有五個的行

結構表基本上看起來這樣:

  • 的article_id
  • article_above_id

文章:

  • 的article_id
  • article_number

我想選擇最多五篇文章_的編號的和從那裏顯示的文章,其中有這些文章在它下面的樹。

article_number-data來自GUI,其中至少有一個是必需的,如果沒有輸入,它將爲空。

+0

聞起來像遞歸查詢。把它作爲出發點/問題,並重新制定你的問題。在模式描述之後我真的迷失了方向。 – Leonidas 2010-01-25 13:59:15

回答

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 

(注:我用了「上面」字段結構表在樹上面的意思,即子項的ID如果已經打開了的樹倒過來,有葉下掛。根,您將不得不切換使用字段。)

+0

這不會考慮用戶只輸入四個商品編號,或?文章數字串btw。 – Erik 2010-01-25 14:21:44

+0

@Erik:是的,您將不得不更改in()中的內容和數字以比較計數。如何最好地做到這一點取決於你如何運行查詢。在in()中使用字符串而不是數字不是問題。 – Guffa 2010-01-25 16:17:15

+0

謝謝!在計數值上使用一個案例得到它的工作。 – Erik 2010-01-26 07:23:49

相關問題