日期:2014-05-17  浏览次数:20562 次

请教一个查询问题,求效率最高的解决方案
本帖最后由 s2160487 于 2013-09-05 09:41:00 编辑
Table A  --所有用户表

UserID SupID RegisterDate
————————————————————————
Table B  --上级代理表

UserID 
————————————————————————

其中Table A.SupID 对应 Table B.UserID,表示Table A的用户是B的下级

需求:查询出3个月没有发展新下级的上级的所有下级用户(- -|||有点绕)

先谢谢了,在线等

------解决方案--------------------
select b.*
from TableB b
where not exists(select 1 from TableA a where b.SupID=a.UserID 
and  RegisterDate between DATEADD(month,-3,getdate()) and GETDATE())
------解决方案--------------------

create table A (UserID nvarchar(10),SupID nvarchar(10),RegisterDate datetime)
insert into A values ('UserB','UserA','2013-05-05')
insert into A values ('UserC','UserB','2013-07-05')
insert into A values ('UserD','UserC','2013-08-05')
insert into A values ('UserE','UserD','2013-06-05')
create table B (UserID nvarchar(10))
insert into B values ('UserA')
insert into B values ('UserB')
insert into B values ('UserC')
insert into B values ('UserD')
select b.UserID 
from A a
INNER JOIN B b
ON a.SupID=b.UserID
where a.SupID not in(
select SupID
from A
where RegisterDate>DATEADD(mm,-3,GETDATE()))

/*
UserA
UserD
*/

------解决方案--------------------
引用:
hdhai9451 你好,RegisterDate是Table A的字段



select b.*
from TableB b
where  not exists(select 1 from TableA a 
where b.SupID=a.UserID 
and A.RegisterDate between DATEADD(month,-3,getdate()) and GETDATE())

改一下,你试试
------解决方案--------------------