首页 新闻 会员 周边

求助:无极级联数据查询

0
悬赏园豆:50 [已关闭问题] 关闭于 2011-11-10 16:14

有表结构如下:

主表:记录具体的数据,ID为主键,category与从表之category关联

id int identity

category nvarchar(50) nullable

 

从表:记录数据分类,category是主键,parent是上级category,自关联到category,顶级category值为空,root为根节点,不能为空,自关联到category,根节点的root为自身category

 

category nvarchar(50) primary

parent nvarchar(50) nullable

root nvarchar(50) not null

 

关系表:主表与从表的关联,id是主表之id,category是从表之category,id与category为联合主键

id int

category

 

查询需求,对于提供的任何一个category,能在主表中查询出所有的数据,这些数据的特征是要么category是有效的关联,要么数据的category是指定category的上级之一。

 

感谢!

问题补充: 谢谢。我是说顶级category的parent值为空。可能标点符号和描述不清。
无之无的主页 无之无 | 大侠五级 | 园豆:5095
提问于:2010-12-14 11:24
< >
分享
所有回答(1)
0

楼主既然主表有与从表的关联为何还要关系表呢
  从表category为主键顶级值怎能为空

你给的查询需求说的有点模糊
不过根据理解还是先给出一段代码
select * from
[主表] a,[从表] b,[关联表] c
where a.id=c.id and b.category=c.category
  and (a.category=[参数category] or a.category in
  (select category from [从表] where parent=[参数category]))

追索 | 园豆:625 (小虾三级) | 2010-12-14 13:10
去掉“从表category为主键顶级值怎能为空”这句话 你要表达的意思应该是顶级后parent为空
支持(0) 反对(0) 追索 | 园豆:625 (小虾三级) | 2010-12-14 13:18
这是根据参数category在主表中查询出同root下所有的数据(不管是category的上级还是下级) select * from [主表] where id in (select b.id from [从表] a,[关联表] b where a.category=b.category and a.root in (select root from [从表] where category=[参数category]))
支持(0) 反对(0) 追索 | 园豆:625 (小虾三级) | 2010-12-14 13:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册