各位大侠 ,小弟现在遇见一个这样的问题
建立了一个存储过程,参数是课程ID的集合
首先我以逗号分隔课程ID的集合 ,同时去关联课程表,得到一个小的课程表(也就是根据传进来的参数得到的)
我现在想做的事情是 ,去从课程表(总的课程表)查找出 教室ID 一样的,并且上课时间一样的,还有就是开课和下课时间不冲突的,并且课程ID 不等于小的课程表里的ID
总的功能也就是判断排课时有没有教室冲突 ,我以前的做法是一次传进来一个课程ID ,去查库,这样就得查找几百次或者上千次,我现在想用一个查询实现 ,代码如下:
declare @ids varchar(5000) --课程ID集合
set @ids = '1880378,1880382,1880386,
declare @Lessons table
(
nLessonID int
)
insert into @Lessons
select * from Split(@ids)
select P.*,'教室冲突' as CollidedType from
(
select B.* from @Lessons A left join bs_lesson as B
on A.nLessonID = B.id
) T
INNER join bs_lesson P
on T.dtDate = P.dtDate
and T.sRoomCode = P.sRoomCode
and T.id <> P.id -- 不判断自身,允许覆盖(允许重排)
and P.sRoomCode is not null and P.sRoomCode <> ''
and not (P.SectBegin >= T.SectEnd or P.SectEnd <= T.SectBegin )
但是现在查询出来的结果总是有出入 ,请大侠们帮忙看看 我这里写的有什么问题 ,如果有其他好的方法的话,也请赐教下,先再这里谢过了