用户商品分类表
userid int '用户ID号
rackcode varchar(9) '分类代号
就这样,主键是两个,如
A 用户有数据
A 001001
A 001003
A 001003001
B 用户有数据
B 001001
B 001003
B 001003001
B 001003002
userid int '用户ID号
rackcode varchar(9) '分类代号
就这样,主键是两个,如
A 用户有数据
A 001001
A 001003
A 001003001
B 用户有数据
B 001001
B 001003
B 001003001
B 001003002
解决方案 »
- 求一查询语句
- sql server 2005 服务器名称可以改吗?
- 问一个表中某个字段的排序问题
- sqlserver存储过程只能返回一个结果集吗?为什么?
- SQL Server 2000 数据库的text数据类型的容量
- 如何将sqlserver2000中的数据导成powerdesigner的概念模型?
- 一个业务比较复杂
- 请问:在本地PC上怎样连接远程的sqlserver呢?
- 多版本号物料清单按材料展开(最下阶层展开)
- ★★★★一个简单的SQL语句,该怎么写?★★★★
- phantomMan(全力转向 .net 和 数据库方向) :你在吗,能不能帮帮我看看这个sql怎么写
- 我的XP系统为什么不能安装SQL2000 的服务端,只能安装客户端
现在想用查询语句查找出 A 和 B 各自还没有选择的分类,如
A 没有选择的分类 001002,001003(列出不能选),001003002
B 没有选择的分类 001002 (由于001003下的子类都被选了,所有001003不需要查找出来)
漏了一个,例如a没有选001,b也没有选择001,结果集合应该是:
A 没有选择的分类 001,001002,001003(列出不能选),001003002
B 没有选择的分类 001,001002 (由于001003下的子类都被选了,所有001003不需要查找出来)
不知道我理解对不对!?////////////
reate table #a (rackcode varchar(9),rackname varchar(40),
parentrackcode varchar(9),childflag bit)
create table #b (usr varchar(10),rackcode varchar(9))
/*rackcode varchar(9) '分?代?
rackname varchar(40) '分?名?
parentrackcode varchar(9) '父?代?,0表示?有父?
childflag bit '是否有子??志 0?有子?,1有子?
比如有如下?据
001 aaa 0 1
001001 aaa1 001 0
001002 aaa2 001 0
001003 aaa3 001 1
001003001 aaa31 001003 0
001003002 aaa32 001003 0
*/
insert into #a values ('001','aaa','0',1)
insert into #a values ('001001','aaa1','001',0)
insert into #a values ('001002','aaa2','001',0)
insert into #a values ('001003','aaa2','001',1)
insert into #a values ('001003001','aaa31','001003',0)
insert into #a values ('001003002','aaa32','001003',0)
insert into #b values('a','001001')
insert into #b values('a','001003')
insert into #b values('a','001003001')
insert into #b values ('b','001001')
insert into #b values('b','001003')
insert into #b values('b','001003001')
insert into #b values ('b','001003002')select * from #a
select * from #b
/*
rackcode rackname parentrackcode childflag
--------- ---------------------------------------- -------------- ---------
001 aaa 0 1
001001 aaa1 001 0
001002 aaa2 001 0
001003 aaa2 001 1
001003001 aaa31 001003 0
001003002 aaa32 001003 0
*/
select distinct b.usr,a.rackcode from #b b
cross join #a a
where
(a.childflag = 0 and not exists(
select c.rackcode from #b c where c.usr = b.usr and c.rackcode = a.rackcode
)
)
or
(
a.childflag = 1 and exists(
select c.rackcode from #a c where
c.parentrackcode = a.rackcode
and not exists (select * from #b d where d.rackcode = c.rackcode and d.usr = b.usr)
)
)/*
usr rackcode
---------- ---------
a 001
b 001
a 001002
b 001002
a 001003
a 001003002(6 row(s) affected)
*/
001确实不是我想要的数据,父类001不需要存在用户分类表中的