vn 发帖数: 6191 | 1 【 以下文字转载自 Database 讨论区 】
发信人: vn (jmj), 信区: Database
标 题: 问一个query,about Recursive Queries Using Common Table Expressions
发信站: BBS 未名空间站 (Tue Jul 24 14:37:25 2012, 美东)
基本大意是从tbItems里找出几个itemID
然后从tbHierarchy里找出他们的所有parents
WITH Result(ItemID, ParentID, Level)
AS
(
--get the anchor member from tbItems
SELECT c.itemID, itemParentID, 0 AS Level
FROM tbCatalogItems AS c
INNER JOIN
tbItems
ON
c.itemID = tbItems.itemID
WHERE
c.approved = 0
UNION ALL
--recursive member from tbHierarchy
SELECT h.hierarchyItemID, h.parentItemID, Level + 1
FROM tbHierarchy AS h
INNER JOIN
Result AS r
ON
h.hierarchyItemID = r.ParentID
)
SELECT *
FROM Result
第一次用这个cte
不明白这个结果为什么不是按level排序出来的 这个顺序好怪啊?
或者有什么其他办法找parents的???我不需要那么多重复的parents,level也不需
要。。。
ItemID ParentID Level
----------- ----------- -----------
7 3 0
11 2 0
18 11 0
19 11 0
21 54 0
31 2 0
33 36 0
34 36 0
35 36 0
36 36 0
38 2 0
39 2 0
40 2 0
54 4 0
****以上是anchor member 是对的
4 1 1
1 0 2
2 1 1
1 0 2
2 1 1
1 0 2
2 1 1
1 0 2
36 35 1
35 8 2
8 1 3
1 0 4
36 35 1
35 8 2
8 1 3
1 0 4
36 35 1
35 8 2
8 1 3
1 0 4
36 35 1
35 8 2
8 1 3
1 0 4
2 1 1
1 0 2
54 12 1
12 1 2
1 0 3
11 1 1
1 0 2
11 1 1
1 0 2
2 1 1
1 0 2
3 1 1
1 0 2
★ 发自iPhone App: ChineseWeb 7.3.1 |
vn 发帖数: 6191 | 2 不管了 乱问一下
不是这个版上牛人多吗~~~
database版不知啥时候有回复。。。 |
m*******r 发帖数: 8950 | |
vn 发帖数: 6191 | 4 你你你 。。。
你聪明 赶紧学下告诉我
原意思在这里:
http://msdn.microsoft.com/en-us/library/ms186243(v=sql.105).asp
【在 m*******r 的大作中提到】 : BEIJING MM为什么现在回国了!?
|
a******p 发帖数: 157 | 5 不是很清楚你要问什么。
group by, order by should work
Expressions
【在 vn 的大作中提到】 : 你你你 。。。 : 你聪明 赶紧学下告诉我 : 原意思在这里: : http://msdn.microsoft.com/en-us/library/ms186243(v=sql.105).asp
|
vn 发帖数: 6191 | 6 如果不用group by 或者 order by 难道出来就成了乱序? 我印象里不是这样的吧。。。
【在 a******p 的大作中提到】 : 不是很清楚你要问什么。 : group by, order by should work : : Expressions
|
a******p 发帖数: 157 | 7 你的结果不是乱序啊,每个叶子节点一层层往上
。。
【在 vn 的大作中提到】 : 如果不用group by 或者 order by 难道出来就成了乱序? 我印象里不是这样的吧。。。
|
vn 发帖数: 6191 | 8 我对这个次序很奇怪 我觉得这种查询出来应该是按level排序啊
为什么不是呢?
你看我上面那个ms自己的例子 是按level循环的对吧
【在 a******p 的大作中提到】 : 你的结果不是乱序啊,每个叶子节点一层层往上 : : 。。
|
vn 发帖数: 6191 | 9 等前版大看看'''
★ 发自iPhone App: ChineseWeb 7.3.1
【在 vn 的大作中提到】 : 我对这个次序很奇怪 我觉得这种查询出来应该是按level排序啊 : 为什么不是呢? : 你看我上面那个ms自己的例子 是按level循环的对吧
|
z***y 发帖数: 7151 | |
|
|
b*****n 发帖数: 10665 | 11 你做DATABASE的阿?
Expressions
【在 vn 的大作中提到】 : 等前版大看看''' : : ★ 发自iPhone App: ChineseWeb 7.3.1
|
z***y 发帖数: 7151 | 12
不会做
【在 b*****n 的大作中提到】 : 你做DATABASE的阿? : : Expressions
|
vn 发帖数: 6191 | 13 请曾哥进来太不容易了'''
无论如何膜拜下orz
★ 发自iPhone App: ChineseWeb 7.3.1
【在 z***y 的大作中提到】 : 额不会
|
T*R 发帖数: 25894 | 14 半路出家的大妈都这样。
【在 a******p 的大作中提到】 : 你的结果不是乱序啊,每个叶子节点一层层往上 : : 。。
|
t********n 发帖数: 728 | 15 我猜测你方法是对的'level 0 has multiPle results thats why the results are
not ordered
Use distinct and join to get rid of |
vn 发帖数: 6191 | 16 你也用sql server吗???
【在 t********n 的大作中提到】 : 我猜测你方法是对的'level 0 has multiPle results thats why the results are : not ordered : Use distinct and join to get rid of
|
vn 发帖数: 6191 | 17 that s y i did not ask u!
【在 T*R 的大作中提到】 : 半路出家的大妈都这样。
|
T*R 发帖数: 25894 | 18 still, nobody bird u yah....
【在 vn 的大作中提到】 : that s y i did not ask u!
|
c*h 发帖数: 33018 | 19 我还想了一下,不够冰雪。
呵呵
【在 T*R 的大作中提到】 : still, nobody bird u yah....
|
vn 发帖数: 6191 | 20 谁说的!!
我被踹了 球安慰包~
http://stackoverflow.com/questions/11652673/result-from-cte-que
【在 T*R 的大作中提到】 : still, nobody bird u yah....
|
|
|
vn 发帖数: 6191 | 21 可能我问题就是有问题
答案就是没有order by的情况下 sql server想怎么执行怎么执行~~
【在 c*h 的大作中提到】 : 我还想了一下,不够冰雪。 : 呵呵
|
t********n 发帖数: 728 | 22 PM your number for details |
z***y 发帖数: 7151 | 23 Without order by you cannot 100% guaranty the order order. When results
are ready for return, if there's order by, optimizer will use it other wise
it will return whatever in the buffer pool depending how the data found.
If there's non clustered index used, optimizer will use the first column of
non clustered index as order by. If there's no clustered index, means that
data was in heap, then the optimizer would use the first page number of the
of each records.
Please send me baozi for this answer. 40 baozi would be decent price
consider the time I've spent. |
vn 发帖数: 6191 | 24 好深奥啊 还全是鸟语 一时半会理解不了。。。
decent price我这种ws的人出不起 给您凑个整好了~~~
wise
of
that
the
【在 z***y 的大作中提到】 : Without order by you cannot 100% guaranty the order order. When results : are ready for return, if there's order by, optimizer will use it other wise : it will return whatever in the buffer pool depending how the data found. : If there's non clustered index used, optimizer will use the first column of : non clustered index as order by. If there's no clustered index, means that : data was in heap, then the optimizer would use the first page number of the : of each records. : Please send me baozi for this answer. 40 baozi would be decent price : consider the time I've spent.
|
z***y 发帖数: 7151 | 25 哎没钱啊原来!
这样吧, 你先给100wb, 剩下的有再还。
【在 vn 的大作中提到】 : 好深奥啊 还全是鸟语 一时半会理解不了。。。 : decent price我这种ws的人出不起 给您凑个整好了~~~ : : wise : of : that : the
|
vn 发帖数: 6191 | 26 该给的都给了
剩下这点家当是爷保命滴'''死也不给了''''''''''''''''''''
★ 发自iPhone App: ChineseWeb 7.3.1
【在 z***y 的大作中提到】 : 哎没钱啊原来! : 这样吧, 你先给100wb, 剩下的有再还。
|