也就是这样建表: 姓名1 姓名2 a ab a a1 ab a2 a1 a3 a2 ab1 ab ab2 ab1 ab3 ab2 abc1 ab1 abc2 abc1 要求查询 查询 abc3 能显示出abc1,ab1,ab,a查询 a 能显示出ab,a1,a2,a3,ab1,ab2,ab3,abc1,abc2 查询如何写?
第二个问题就用你现在的表的结构,我想创建一个临时表来进行检索 #tempName,包括三个字段: 姓名 状态 //三种:0-刚加入尚未检索;1-正在检索;2-完成检索 检索方向 //两种:0-向上;1-向下;2-双向//说明1 insert into #tempName values('姓名',0,2) update #tempName set 状态=1 insert into #tempName (select 姓名1,0,0 from table where 姓名2='姓名') insert into #tempName (select 姓名2,0,1 from table where 姓名1='姓名') update #tempName set 状态=2 where 姓名='姓名'//说明2 do while exist (select * from #TempName where 状态=0 and 检索方向=0) { update #TempName set 状态=1 where 状态=0 and 检索方向=0 insert into #tempName (select 姓名1,0,0 from table where 姓名2 in (select 姓名 from #tempNamewhere 状态=1 and 检索方向=0)) update #TempName set 状态=2 where 状态=1 and 检索方向=0 }//说明3 do while exist (select * from #TempName where 状态=0 and 检索方向=1) { update #TempName set 状态=1 where 状态=0 and 检索方向=1 insert into #tempName (select 姓名2,0,0 from table where 姓名1 in (select 姓名 from #tempNamewhere 状态=1 and 检索方向=1)) update #TempName set 状态=2 where 状态=1 and 检索方向=1 }//说明4 select 姓名 from #tempName说明1:将提供的姓名输入到表中,同时将其所有上下级也输入,标示为需要查找其上级或下级 说明2:将所有没有检索上级的姓名的上级输入到表中,同时将这些设置为已经检索过了(这个好像有点夸张,需要查找上级的每次肯定只有一个人了) 说明3:将所有没有检索下级的姓名的下级输入到表中,同时将这些设置为已经检索过了 说明4:得到最后的结果,没有排序,用其它方法进行排序我也不知道这种算法到底怎么描述了,跟图形学中的种子填充法好像有点像。
第二个问题就用你现在的表的结构,我想创建一个临时表来进行检索 #tempName,包括三个字段: 姓名 状态 //三种:0-刚加入尚未检索;1-正在检索;2-完成检索 检索方向 //两种:0-向上;1-向下;2-双向//说明1 insert into #tempName values('姓名',0,2) update #tempName set 状态=1 insert into #tempName (select 姓名1,0,0 from table where 姓名2='姓名') insert into #tempName (select 姓名2,0,1 from table where 姓名1='姓名') update #tempName set 状态=2 where 姓名='姓名'//说明2 do while exist (select * from #TempName where 状态=0 and 检索方向=0) { update #TempName set 状态=1 where 状态=0 and 检索方向=0 insert into #tempName (select 姓名1,0,0 from table where 姓名2 in (select 姓名 from #tempNamewhere 状态=1 and 检索方向=0)) update #TempName set 状态=2 where 状态=1 and 检索方向=0 }//说明3 do while exist (select * from #TempName where 状态=0 and 检索方向=1) { update #TempName set 状态=1 where 状态=0 and 检索方向=1 insert into #tempName (select 姓名2,0,0 from table where 姓名1 in (select 姓名 from #tempNamewhere 状态=1 and 检索方向=1)) update #TempName set 状态=2 where 状态=1 and 检索方向=1 }//说明4 select 姓名 from #tempName说明1:将提供的姓名输入到表中,同时将其所有上下级也输入,标示为需要查找其上级或下级 说明2:将所有没有检索上级的姓名的上级输入到表中,同时将这些设置为已经检索过了(这个好像有点夸张,需要查找上级的每次肯定只有一个人了) 说明3:将所有没有检索下级的姓名的下级输入到表中,同时将这些设置为已经检索过了 说明4:得到最后的结果,没有排序,用其它方法进行排序我也不知道这种算法到底怎么描述了,跟图形学中的种子填充法好像有点像。
第二个问题就用你现在的表的结构,我想创建一个临时表来进行检索 #tempName,包括三个字段: 姓名 状态 //三种:0-刚加入尚未检索;1-正在检索;2-完成检索 检索方向 //两种:0-向上;1-向下;2-双向//说明1 insert into #tempName values('姓名',0,2) update #tempName set 状态=1 insert into #tempName (select 姓名1,0,0 from table where 姓名2='姓名') insert into #tempName (select 姓名2,0,1 from table where 姓名1='姓名') update #tempName set 状态=2 where 姓名='姓名'//说明2 do while exist (select * from #TempName where 状态=0 and 检索方向=0) { update #TempName set 状态=1 where 状态=0 and 检索方向=0 insert into #tempName (select 姓名1,0,0 from table where 姓名2 in (select 姓名 from #tempNamewhere 状态=1 and 检索方向=0)) update #TempName set 状态=2 where 状态=1 and 检索方向=0 }//说明3 do while exist (select * from #TempName where 状态=0 and 检索方向=1) { update #TempName set 状态=1 where 状态=0 and 检索方向=1 insert into #tempName (select 姓名2,0,0 from table where 姓名1 in (select 姓名 from #tempNamewhere 状态=1 and 检索方向=1)) update #TempName set 状态=2 where 状态=1 and 检索方向=1 }//说明4 select 姓名 from #tempName说明1:将提供的姓名输入到表中,同时将其所有上下级也输入,标示为需要查找其上级或下级 说明2:将所有没有检索上级的姓名的上级输入到表中,同时将这些设置为已经检索过了(这个好像有点夸张,需要查找上级的每次肯定只有一个人了) 说明3:将所有没有检索下级的姓名的下级输入到表中,同时将这些设置为已经检索过了 说明4:得到最后的结果,没有排序,用其它方法进行排序我也不知道这种算法到底怎么描述了,跟图形学中的种子填充法好像有点像。
姓名1 姓名2
a
ab a
a1 ab
a2 a1
a3 a2
ab1 ab
ab2 ab1
ab3 ab2
abc1 ab1
abc2 abc1
要求查询 查询 abc3 能显示出abc1,ab1,ab,a查询 a 能显示出ab,a1,a2,a3,ab1,ab2,ab3,abc1,abc2
查询如何写?
对第一个问题希望有朋友给例程。
#tempName,包括三个字段:
姓名
状态 //三种:0-刚加入尚未检索;1-正在检索;2-完成检索
检索方向 //两种:0-向上;1-向下;2-双向//说明1
insert into #tempName values('姓名',0,2)
update #tempName set 状态=1
insert into #tempName (select 姓名1,0,0 from table where 姓名2='姓名')
insert into #tempName (select 姓名2,0,1 from table where 姓名1='姓名')
update #tempName set 状态=2 where 姓名='姓名'//说明2
do while exist (select * from #TempName where 状态=0 and 检索方向=0)
{
update #TempName set 状态=1 where 状态=0 and 检索方向=0
insert into #tempName (select 姓名1,0,0 from table where 姓名2 in (select 姓名 from #tempNamewhere 状态=1 and 检索方向=0))
update #TempName set 状态=2 where 状态=1 and 检索方向=0
}//说明3
do while exist (select * from #TempName where 状态=0 and 检索方向=1)
{
update #TempName set 状态=1 where 状态=0 and 检索方向=1
insert into #tempName (select 姓名2,0,0 from table where 姓名1 in (select 姓名 from #tempNamewhere 状态=1 and 检索方向=1))
update #TempName set 状态=2 where 状态=1 and 检索方向=1
}//说明4
select 姓名 from #tempName说明1:将提供的姓名输入到表中,同时将其所有上下级也输入,标示为需要查找其上级或下级
说明2:将所有没有检索上级的姓名的上级输入到表中,同时将这些设置为已经检索过了(这个好像有点夸张,需要查找上级的每次肯定只有一个人了)
说明3:将所有没有检索下级的姓名的下级输入到表中,同时将这些设置为已经检索过了
说明4:得到最后的结果,没有排序,用其它方法进行排序我也不知道这种算法到底怎么描述了,跟图形学中的种子填充法好像有点像。
#tempName,包括三个字段:
姓名
状态 //三种:0-刚加入尚未检索;1-正在检索;2-完成检索
检索方向 //两种:0-向上;1-向下;2-双向//说明1
insert into #tempName values('姓名',0,2)
update #tempName set 状态=1
insert into #tempName (select 姓名1,0,0 from table where 姓名2='姓名')
insert into #tempName (select 姓名2,0,1 from table where 姓名1='姓名')
update #tempName set 状态=2 where 姓名='姓名'//说明2
do while exist (select * from #TempName where 状态=0 and 检索方向=0)
{
update #TempName set 状态=1 where 状态=0 and 检索方向=0
insert into #tempName (select 姓名1,0,0 from table where 姓名2 in (select 姓名 from #tempNamewhere 状态=1 and 检索方向=0))
update #TempName set 状态=2 where 状态=1 and 检索方向=0
}//说明3
do while exist (select * from #TempName where 状态=0 and 检索方向=1)
{
update #TempName set 状态=1 where 状态=0 and 检索方向=1
insert into #tempName (select 姓名2,0,0 from table where 姓名1 in (select 姓名 from #tempNamewhere 状态=1 and 检索方向=1))
update #TempName set 状态=2 where 状态=1 and 检索方向=1
}//说明4
select 姓名 from #tempName说明1:将提供的姓名输入到表中,同时将其所有上下级也输入,标示为需要查找其上级或下级
说明2:将所有没有检索上级的姓名的上级输入到表中,同时将这些设置为已经检索过了(这个好像有点夸张,需要查找上级的每次肯定只有一个人了)
说明3:将所有没有检索下级的姓名的下级输入到表中,同时将这些设置为已经检索过了
说明4:得到最后的结果,没有排序,用其它方法进行排序我也不知道这种算法到底怎么描述了,跟图形学中的种子填充法好像有点像。
#tempName,包括三个字段:
姓名
状态 //三种:0-刚加入尚未检索;1-正在检索;2-完成检索
检索方向 //两种:0-向上;1-向下;2-双向//说明1
insert into #tempName values('姓名',0,2)
update #tempName set 状态=1
insert into #tempName (select 姓名1,0,0 from table where 姓名2='姓名')
insert into #tempName (select 姓名2,0,1 from table where 姓名1='姓名')
update #tempName set 状态=2 where 姓名='姓名'//说明2
do while exist (select * from #TempName where 状态=0 and 检索方向=0)
{
update #TempName set 状态=1 where 状态=0 and 检索方向=0
insert into #tempName (select 姓名1,0,0 from table where 姓名2 in (select 姓名 from #tempNamewhere 状态=1 and 检索方向=0))
update #TempName set 状态=2 where 状态=1 and 检索方向=0
}//说明3
do while exist (select * from #TempName where 状态=0 and 检索方向=1)
{
update #TempName set 状态=1 where 状态=0 and 检索方向=1
insert into #tempName (select 姓名2,0,0 from table where 姓名1 in (select 姓名 from #tempNamewhere 状态=1 and 检索方向=1))
update #TempName set 状态=2 where 状态=1 and 检索方向=1
}//说明4
select 姓名 from #tempName说明1:将提供的姓名输入到表中,同时将其所有上下级也输入,标示为需要查找其上级或下级
说明2:将所有没有检索上级的姓名的上级输入到表中,同时将这些设置为已经检索过了(这个好像有点夸张,需要查找上级的每次肯定只有一个人了)
说明3:将所有没有检索下级的姓名的下级输入到表中,同时将这些设置为已经检索过了
说明4:得到最后的结果,没有排序,用其它方法进行排序我也不知道这种算法到底怎么描述了,跟图形学中的种子填充法好像有点像。
sorry
create table
create view
create proc
create trigger
dao.createdatabase
进入SQL EnterpriseManager
选中你的数据库
按鼠标右键
选择[All Tasks]->[Generate SQL Script...]
一定要用SQL OLAP Service,没有用过OLAP Service。谈一谈怎样用OLAP Service来解决这个问题。
我觉的第二问题和和商品管理中的商品编码的分级类似。