【发布时间】:2016-08-02 19:47:28
【问题描述】:
我需要编写一个存储过程来将一些订单数据从孩子返回给父母。描述我想要做什么有点复杂,但让我试试吧: 假设我们有一个名为 Categories: Parent > Child1 > Child2 > Child3 的 Hierarchy,全部使用 SQL HierarchyID 存储:
Category Table
--------------
Cat_ID | Cat_Name
..............................
/1/ | News
/1/1/ | NewsOfUSA
/1/1/1/ | NewsOfWestUSA
/1/1/1/1/ | NewsOfWashington
我们已经用这些类别保存了新闻,如下所示:
News Table
-------------
News_ID | FK_Cat_ID | News_Content
.........................................
0001 | /1/ | one
0002 | /1/1/ | two
0003 | /1/1/1/ | three
0004 | /1/1/1/1/ | four1
0005 | /1/1/1/1/ | four2
0006 | /1/1/1/1/ | four3
0007 | /1/1/1/1/ | four4
最后,我想在此条件下选择 sxample 十大新闻:
如果 NewsOfWashington 有 10 条新闻,则选择它, 否则从 NewsOfWestUSA 中选择, 否则从 NewsOfUSA 中选择, 否则从新闻中选择, 直到你达到十岁
而要选择的顺序是这样的
four4,four3,four2,four1,three,two,one
我曾尝试使用 Recursive CTE,但找不到合适的实现方式。
【问题讨论】:
-
使用
UNION? 的多个查询? -
@Malk,不,不,只是这两个表,我想首先检查标记为 NewsOfWashington 的新闻是否达到 10,如果不是从他的父 NewsOfWestUSA 中选择等等...
标签: sql sql-server recursive-query hierarchyid