求一个SQL实现方式,100分送上

blacklevin 2004-08-30 03:20:10
有两张表,一张类型表,一张产品表
要根据一个类型ID,把所有这个类型(包括子类型)的产品都列出来
表结构如下:

表: Category
CateID: 唯一标识ID
CateName: 类型名
ParentID: 父ID

表: Product
ProdID: 唯一标识ID
CateID: 类型ID
ProdName: 产品名
……………………

举例:
Category的数据如下
1 0 电子类
2 0 数码类
3 2 数码相机
4 2 MP3机
5 3 数码相机镜头
6 3 数码相机电池
………………
要查类型ID为2的所有产品,就要把数码相机、数码相机镜头和电池都查出来

谢谢
...全文
223 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2004-08-30
  • 打赏
  • 举报
回复
冒牌的已经行啦
blacklevin 2004-08-30
  • 打赏
  • 举报
回复
可以用SQL递归吗?
dnvodc 2004-08-30
  • 打赏
  • 举报
回复
分类表是个树形结构,类似BOM,一定要临时表
dnvodc 2004-08-30
  • 打赏
  • 举报
回复
OH,我的也不对
dnvodc 2004-08-30
  • 打赏
  • 举报
回复
select * from Product a where exists (select Cateid from Category where CateID=a.CateID and ParentID=2)
tx1icenhe 2004-08-30
  • 打赏
  • 举报
回复
--创建这样一个自定义函数
create function f_cid(
@id int
)returns @re table(id int,level int)
as
begin
declare @l int
set @l=0
insert @re select @id,@l
while @@rowcount>0
begin
set @l=@l+1
insert @re select a.CateID,@l
from Category a,@re b
where a.ParentID=b.id and b.level=@l-1
end
return
end
go


select a.* from Product a,dbo.f_cid(2) b
where a。CateID=b.id
tx1icenhe 2004-08-30
  • 打赏
  • 举报
回复
写个函数查询子类型
参考:
http://community.csdn.net/Expert/topic/3310/3310329.xml?temp=.7499048
的函数
arrow_gx 2004-08-30
  • 打赏
  • 举报
回复
你的表结构好像不太合理,我改一下,看看如何

有两张表,一张类型表,一张产品表
表结构如下:
表: Category
CateID: 唯一标识ID ParentID: 父ID CateName: 类型名

表: Product
AUTOID: 唯一标识ID(自动增加) CateID: 类型ID ProdName: 产品名

举例:
Category的数据如下
1 0 电子类
2 0 数码类
3 2 数码相机
4 2 MP3机
5 3 数码相机镜头
6 3 数码相机电池
………………
要查类型ID为2的所有产品,就要把数码相机、数码相机镜头和电池都查出来

select * from Product where CateID=2 or CateID in (select CateID from Category where ParentID=2)
tomhuang 2004-08-30
  • 打赏
  • 举报
回复
建议楼主将分类放在一棵树上,然后单击树结点显示相关内容。
penghongxia 2004-08-30
  • 打赏
  • 举报
回复
没看懂楼主说什么,在描述清楚点,举例中怎么只有一张表,应该有两张表吧。

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧