各位帮个忙吧,否则我会被辞职了
我有一个表,是递归循环的,现在的结构是这样的,类别表 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