首页 新闻 赞助 找找看

求教各位大神SQL查询语句啊

0
悬赏园豆:30 [已解决问题] 解决于 2014-12-27 19:23

我在做个借教室的系统,有个Classroominfo表,Borrowtable表;查不占用教室的信息,课程占用节数这出问题了,我有三个字段,use_begin,use_week,use_end,分别是占用其实节,占用星期几,占用结束节。上课是分段的(1-2,3-4或3-5,6-7,8-9或8-10,11-12或11-13) 如果我查按照从第一节到第6节没占用的教室,我先查Borrowtable表里面存在1-6节的教室,select * from Borrowtable where Use_begin >=1 and Use_begin >=6 and Use_End >=1 && Use_End <=6 and Use_Week=1(这里会查到好几个相同教室id,因为教室分段嘛),然后在查Classroominfo中id不在 查到的id里面的教室;

但是这样结果是会查到第6节有课的教室,请问该怎么解决?或者换种要求,查1-6节,就是同时满足1-2,3-4或3-5,6这几个段有课的记为一条记录

cvxcrfa的主页 cvxcrfa | 初学一级 | 园豆:34
提问于:2014-12-24 17:29
< >
分享
最佳答案
0

貌似你这和火车票查询如出一辙啊~我觉得这个表设计有点问题。如果把每个节点作为一条数据更好。

use_week(使用星期),use_node(使用节点)。每次借1~2的话,就插入两条记录。

收获园豆:30
幻天芒 | 高人七级 |园豆:37175 | 2014-12-25 09:18


--这就是前6节中有占用的教室
select * from Borrowtable where Use_End <=6
--然后用not in (not exist)查询就可以了哇

幻天芒 | 园豆:37175 (高人七级) | 2014-12-25 09:25

数据库是别人设计的,不好改,改了怕影响其他的东西!虽然你的说法我也很赞同,这样操作起来会方便很多! 还有你给我的查询语句不行的,我之前试过,因为我的是分段的, use_end不可能等于6 它就只有,(2,4或5,7,9或10,12或13)这几种取值,如果查小于等于6的话,会把6-7节有课的一起查出来! 最后我就采用了笨办法,在程序里面先加个判断用户选取的开始节和结束节,如果没有取得结束节的那几种取值,就变为这几种取值! 开始节也一样,如果不在开始节对应取值,就变为相应取值!

cvxcrfa | 园豆:34 (初学一级) | 2014-12-25 12:04

@cvxcrfa: 嗯,对,还需要对use_start做下判断,呵呵~

幻天芒 | 园豆:37175 (高人七级) | 2014-12-25 12:21
其他回答(2)
0

我看了两遍都没有看明白你问题。 你的给的信息很不详细。

山水中华 | 园豆:255 (菜鸟二级) | 2014-12-24 18:15

就是我想按照占用教室的节数来查,(1-2,3-4或3-5,6-7,8-9或8-10,11-12或11-13)节数段, 比如我想查存在1-5节的教室,现在我查到的同个ID在1-2有条记录,3-5有条记录,如何让同时满足两个时间段内的ID记为一条记录?

支持(0) 反对(0) cvxcrfa | 园豆:34 (初学一级) | 2014-12-24 18:24
0

看这问题描述跟看英文阅读似的,好无助啊

i迷倪 | 园豆:185 (初学一级) | 2014-12-25 18:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册