建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
   参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382
   
   1. 你的 create table xxx .. 语句
   2. 你的 insert into xxx ... 语句
   3. 结果是什么样,(并给以简单的算法描述)
   4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
   
   这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。

解决方案 »

  1.   

    DROP TABLE IF EXISTS `table_course`;
    CREATE TABLE `table_course` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT,
      `userid` int(11) DEFAULT NULL COMMENT '会员ID',
      `classid` bigint(20) DEFAULT NULL COMMENT '班级ID',
      `start_date` date DEFAULT NULL COMMENT '开始日期',
      `end_date` date DEFAULT NULL COMMENT '结束日期',
      `type` tinyint(1) DEFAULT NULL COMMENT '类型:1上课,2请假,',
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=99 DEFAULT CHARSET=gbk;INSERT INTO `table_course` VALUES ('1', '101', '2885', '2014-07-15', '2014-07-18', '2');
    INSERT INTO `table_course` VALUES ('2', '102', '2885', '2014-07-15', '2014-07-20', '2');
    INSERT INTO `table_course` VALUES ('3', '103', '2885', '2014-07-15', '2014-07-25', '2');
    INSERT INTO `table_course` VALUES ('4', '104', '2885', '2014-07-15', '2014-07-30', '2');
    INSERT INTO `table_course` VALUES ('5', '105', '2885', '2014-07-18', '2014-07-25', '1');
    比如以上为某个班级的数据,前面四条是请假会员的数据,也就是在请假的时间段内可以供别人上课的时间,第五条数据是有会员在这班临时上课,求出该班级还有多少剩余的学位?
      

  2.   


    看起来有些乱
    1 101 2885 2014-07-15 2014-07-18 2
    2 102 2885 2014-07-15 2014-07-20 2
    3 103 2885 2014-07-15 2014-07-25 2
    4 104 2885 2014-07-15 2014-07-30 2
    5 105 2885 2014-07-18 2014-07-25 1结果:
    ID 1,2,3空学位没有使用,ID4学位剩余(2014-07-15至2014-07-17),(2014-07-26至2014-07-30)这两个时间段,当然也可以说用ID3的学位了,用哪个都行,最后重点是,有会员来预约(2014-07-26至2014-07-30)这时间段的课,就提示是否有学位就行了。