【SQL SERVER小品】内在联系与外在表现--解答对递归查询的疑问
时 间:2015-07-22 11:11:17
作 者:煮江品茶 ID:10802 城市:武汉
摘 要:【SQL SERVER小品】内在联系于外在表现--解答对递归查询的疑问
正 文:
WITH 单据递归查询 (bomID,产品id,子件ID,单耗,损耗率,根产品,level,num) AS
(
Select bomID,产品id,子件ID,单耗,损耗率,产品id as 根产品,0 as level,子件ID as num
FROM bom表
where 产品ID not in (Select distinct 子件id FROM bom表)
UNION ALL
Select a.bomID,a.产品id,a.子件ID,a.单耗,a.损耗率,b.根产品,b.level+1 as level, b.num + '_' +a.子件ID as num
FROM bom表 AS a,单据递归查询 AS b
Where a.产品ID=b.子件ID)
Select * FROM 单据递归查询 orDER BY 根产品,num;
不过这个查询会跳出“定位点类型和递归部分的类型不匹配”错误。解决这个错误的方法是对字段进行强制类型转换,可以修改为:
WITH 单据递归查询 (bomID,产品id,子件ID,单耗,损耗率,根产品,level,num) AS
(
Select bomID,产品id,子件ID,单耗,损耗率,产品id as 根产品,0 as level,cast(子件ID as varchar) as num
FROM bom表
where 产品ID not in (Select distinct 子件id FROM bom表)
UNION ALL
Select a.bomID,a.产品id,a.子件ID,a.单耗,a.损耗率,b.根产品,b.level+1 as level, cast(cast(b.num as varchar)+'_'+CAST(a.子件ID as varchar) as varchar) as num
FROM bom表 AS a,单据递归查询 AS b
Where a.产品ID=b.子件ID)
Select * FROM 单据递归查询 orDER BY 根产品,num;
深入挖掘13601812106_01同志的错误思想根源,可以发现13601812106_01同志将数据的内在联系与外在表现混为一谈了。BOM数据是一种具有层次结构的数据,这个特性是数据间的内在联系。BOM数据可以用不同的格式进行存储和表现,只要能保持其数据特定的内在联系即可。二维的数据表可以用于存储BOM数据,XML也可以存储BOM数据。二维的数据表便于计算但对层次结构的视觉表现力并不强,XML则相反。正是由于这个原因,二维数据表通常是需要借助树形结构视图控件来呈现层次结构数据的。而想直接用二维数据表来直接呈现层次结构的努力,通常是徒劳的。
递归查询的结果依然是二维的数据表,它只能更好的归集数据,但还是无法在视觉上很清晰地表现出数据间的层次结构。所以,递归查询是用来归集的,不是用来表现的。递归查询归集数据的目的只是将原来由客户端所需要做的运算放到服务器端来完成,比如你需要知道某件产品需要多少种部件以及它们的数量所组成,你在客户端直接调用递归查询就可以得到了,而不必在客户端编写代码来处理BOM表。而将BOM表呈现为TreeView,则不需要递归查询,而直接使用BOM数据表中的数据,编写相应的代码即可。
Access软件网官方交流QQ群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 统计当月之前(不含当月)的记录...(03.11)
- 【Access Inputbo...(03.03)
- 按回车键后光标移动到下一条记录...(02.12)
- 【Access Dsum示例】...(02.07)
- Access对子窗体的数据进行...(02.05)
- 【Access高效办公】上月累...(01.09)
- 【Access高效办公】上月累...(01.06)
- 【Access Inputbo...(12.23)
- 【Access Dsum示例】...(12.16)

学习心得
最新文章
- Microsoft Access数...(04.18)
- 仓库管理实战课程(12)-月度结存...(04.16)
- 仓库管理实战课程(11)-人性化操...(04.15)
- 32位的Access软件转化为64...(04.12)
- 【Access高效办公】如何让vb...(04.11)
- 仓库管理实战课程(10)-入库功能...(04.08)
- Access快速开发平台--Fun...(04.07)
- 仓库管理实战课程(9)-开发往来单...(04.02)
- 仓库管理实战课程(8)-商品信息功...(04.01)
- 仓库管理实战课程(7)-链接表(03.31)