当前位置:编程学习 > C#/ASP.NET >>

各位帮个忙吧,否则我会被辞职了

我有一个表,是递归循环的,现在的结构是这样的,

类别表 IndustryType

id  iparentNo  Name
1     0         工业品

2     0         消费品

3     1          机械

商品表Goods

goodid   Goodname   iparentno 
 
1         灯          0
2         电脑        1


现在我搜索工业品的时候,只能搜索出 "灯"的信息,
能不能把工业品下面的分类的商品也搜索出来,


aa.aspx 页面里面放的是dataset
--------------------编程问答-------------------- 那要看你表都是什么关系了 --------------------编程问答-------------------- 把你要实现的结果写出来,单看你上面,有点晕 --------------------编程问答-------------------- SELECT *
FROM IndustryType 
LEFT OUTER JOIN Goods 
ON IndustryType.id=Goods.goodid
OR IndustryType.id=Goods.iparentno --------------------编程问答-------------------- select goodname from goods where (iparentno in (select iparentno from industrytype))

试试这条语句 --------------------编程问答-------------------- select goodname  from goods a inner join industrytype b on a.iparentno =b.iparentno

这个也可以吧 --------------------编程问答-------------------- 上面的都不行啊,
--------------------编程问答-------------------- 你是要语句对吗 ? --------------------编程问答-------------------- 你是怎么写的? --------------------编程问答--------------------


declare  @AA table([id] int,iparentNo int,[Name] varchar(50))
                  
insert into @AA([id],iparentNo,[Name])

select 1 ,   0      ,  '工业品' union all 
select 2,    0      ,  '消费品' union all
select 3,    1      ,   ' 机械'

declare  @BB table(goodid int,Goodname varchar(50),iparentno int)
                  
insert into @BB(goodid,Goodname,iparentno)
select 1     ,   '灯'  ,        0 union all
select 2      ,  '电脑' ,       1 

SELECT * from @bb where iparentno=(SELECT id FROM @AA where Name='工业品') 
  or iparentno=(SELECT iparentNo FROM @AA where Name='工业品') 


看你的设计好费解,总感觉有问题,你是说灯既是工业品又是消费品么,那么如果再来一个iparentNo=0的分类呢? --------------------编程问答-------------------- select goodname from goods where iparentno=@iparentno
union
select goodname from goods where iparentno=@iparentno+1

感觉很蠢,

但对该业务了解有限... --------------------编程问答-------------------- 查询分类信息和查询类别详细信息是两码事,看你想要哪个
或者搞个表格嵌套,外面显示分类,里面用DataList显示产品名称 --------------------编程问答-------------------- 查询基本不用union的人弱弱的滑过... --------------------编程问答-------------------- 几直接二个表查询不几行了 --------------------编程问答-------------------- 不是很明白LZ的意思 --------------------编程问答-------------------- 麻烦楼主提供表的关系,我是没看出有什么关系可以做这件事情
而且描述也是非常不明确.
BTW:好像结贴率非常低哇... --------------------编程问答-------------------- 这么夸张,会影响你的工作? --------------------编程问答-------------------- 如果你有权修改表结构的话,就改下好了了 --------------------编程问答-------------------- 辞职是你自己主动发起的 如果是被动的话 应该是"被辞退"才对!~ --------------------编程问答-------------------- 来个弱弱的~~



create proc selectType
@id int
as
begin
--创建临时表,保存当前检查类别下面包含的子类
CREATE TABLE #temp
(
 id int ,
 iparentNo int,
 name varchar (20)
)

--创建游标,逐行检查“祖先”是否包含@id
DECLARE typeCursor CURSOR FOR
select id,iparentNo from IndustryType

open typeCursor
declare @tempid int
declare @tempparentid int

fetch next from typeCursor into @tempid,@tempparentid
while(@@fetch_status=0)
begin
--循环调用,一直到顶级类0停止
while(@tempparentid > 0)
begin
--是当前检验类别的子类,那么添加记录到临时表
if(@tempparentid = @id)
begin
insert into #temp select id,iparentNo,name from IndustryType where id=@tempid  
end

select @tempparentid=iparentNo from IndustryType where id = @tempparentid
end

fetch next from typeCursor into @tempid,@tempparentid
end


close typeCursor
deallocate typeCursor

select * from #temp
drop table #temp
end


上面存储过程,输入类别id返回该类下面所有子类。

剩下要怎么做自己看着办。
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,