34,876
社区成员
发帖
与我相关
我的任务
分享declare @class table(classid int,orgid int,coursesid int,classsettime datetime,categoryid int)
insert into @class select 1,1,1,'2009-05-01',1
insert into @class select 2,1,2,'2009-06-01',2
insert into @class select 3,2,4,'2009-07-01',1
insert into @class select 4,2,5,'2009-08-01',1
insert into @class select 5,3,3,'2009-09-01',1
insert into @class select 6,4,6,'2009-10-01',3
insert into @class select 7,1,2,'2009-01-01',2
insert into @class select 8,1,2,'2009-06-02',2
declare @courses table(coursesid int,orgid int,isvouch int,price int,cheaper int,coursestitle varchar(8))
insert into @courses select 1,1,0,1000,900,'英语'
insert into @courses select 2,1,1,1000,900,'体育'
insert into @courses select 3,3,0,1000,900,'音乐'
insert into @courses select 4,2,1,1000,900,'德治'
insert into @courses select 5,2,1,1000,900,'劳动'
insert into @courses select 6,4,1,1000,900,'化学'
declare @org table(orgid int,orgtitle varchar(8))
insert into @org select 1,'大学'
insert into @org select 2,'小学'
insert into @org select 3,'中学'
insert into @org select 4,'预科'
insert into @org select 5,'中专'
select classid ,c.orgid,a.coursesid,classsettime,categoryid from @class a join @courses b on a.coursesid = b.coursesid join @org c on b.orgid = c.orgid
where classsettime>getdate() and categoryid in (1,2) and b.isvouch=1
and not exists(select 1 from @class where orgid = c.orgid and classsettime >a.classsettime )
/*
classid orgid coursesid classsettime categoryid
----------- ----------- ----------- ----------------------- -----------
8 1 2 2009-06-02 00:00:00.000 2
4 2 5 2009-08-01 00:00:00.000 1
(2 row(s) affected)
*/
declare @class table(classid int,orgid int,coursesid int,classsettime datetime,categoryid int)
insert into @class select 1,1,1,'2009-05-01',1
insert into @class select 2,1,2,'2009-06-01',2
insert into @class select 3,2,4,'2009-07-01',1
insert into @class select 4,2,5,'2009-08-01',1
insert into @class select 5,3,3,'2009-09-01',1
insert into @class select 6,4,6,'2009-10-01',3
insert into @class select 7,1,2,'2009-01-01',2
insert into @class select 8,1,2,'2009-06-02',2
declare @courses table(coursesid int,orgid int,isvouch int,price int,cheaper int,coursestitle varchar(8))
insert into @courses select 1,1,0,1000,900,'英语'
insert into @courses select 2,1,1,1000,900,'体育'
insert into @courses select 3,3,0,1000,900,'音乐'
insert into @courses select 4,2,1,1000,900,'德治'
insert into @courses select 5,2,1,1000,900,'劳动'
insert into @courses select 6,4,1,1000,900,'化学'
declare @org table(orgid int,orgtitle varchar(8))
insert into @org select 1,'大学'
insert into @org select 2,'小学'
insert into @org select 3,'中学'
insert into @org select 4,'预科'
insert into @org select 5,'中专'
select
top 10 *
from
(select
c.classid,x.coursestitle,o.orgid,o.orgtitle,x.price,x.cheaper,x.isvouch,c.classsettime
from
@class c,@org o,@courses x
where
c.orgid=o.orgid
and
c.categoryid in(1,2)
and
c.coursesid=x.coursesid
and
c.classsettime>getdate()
and
x.isvouch=1
and
not exists(select 1 from @class where orgid=c.orgid and classsettime>c.classsettime)) t
order by
classsettime asc
/*
classid coursestitle orgid orgtitle price cheaper isvouch classsettime
----------- ------------ ----------- -------- ----------- ----------- ----------- ------------------------------------------------------
8 体育 1 大学 1000 900 1 2009-06-02 00:00:00.000
4 劳动 2 小学 1000 900 1 2009-08-01 00:00:00.000
*/
select
top 10 *
from
(select
c.classid,c.coursestitle,o.orgid,o.orgtitle,x.price,x.cheaper,x.isvouch,x.classsettime
from
class c,org o,courses x
where
c.orgid=o.orgid
and
c.coursesid=x.coursesid
and
c.classsettime>getdate()
and
x.isvouch=1
and
not exists(select 1 from class where orgid=c.orgid and classsettime>t.classsettime)) t
order by
classsettime asc
select top 10 c.classid,x.coursestitle,c.orgid,o.orgtitle,x.price,x.cheaper,x.isvouch,c.classsettime
from class c,org o,courses x
where c.orgid=o.orgid and c.coursesid=x.coursesid
and c.classsettime>getdate() and x.isvouch=1 --添加部分
order by c.classsettime asc select
top 10 *
from
(select
c.classid,c.coursestitle,o.orgid,o.orgtitle,x.price,x.cheaper,x.isvouch,x.classsettime
from
class c,org o,courses x
where
c.orgid=o.orgid
and
c.coursesid=x.coursesid
and
c.classsettime>getdate()
and
x.isvouch=1
and
not exists(select 1 from class where orgid=c.orgid and classsettime>t.classsettime)) t
order by
classsettime asc /*
class表
classid orgid coursesid classsettime
courses表
coursesid orgid isvouch price cheaper
org表
orgid orgtitle
现在以class表为主线,调出前十条数据
select top 10 classid,coursestitle,orgid,orgtitle,price,cheaper,isvouch,classsettime
from class c,org o,courses x
where c.orgid=o.orgid and c.coursesid=x.coursesid
order by classsettime asc
并且这些数据,要满足的条件是
每条数据之间的orgid不一样,classsettime>getdate(),并且isvouch=1,请问这个SQL语句该怎么完善呢?
*/
select top 10 classid,coursestitle,orgid,orgtitle,price,cheaper,isvouch,classsettime
from class c,org o,courses x
where c.orgid=o.orgid and c.coursesid=x.coursesid
and c.classsettime>getdate() and x.isvouch=1 --添加部分
order by classsettime asc