[求助] 一个困扰我很久的导游排班算法问题 (SQL)
甲导游:8月1日-8月7日 杭州,8月10日-8月14日无锡
乙导游:7月29日-8月2日 苏州 8月3日-8月8日 大连 8月15日-8月21日 天津
丙导游:8月17日-8月30日 泰国
其他时间都空闲
1、有一个去四川的团队8月9日出发 6天游程 需要导游
2、有一个去贵阳的团队8月11日出发 2天游程
3、有一个去合肥的团队7月10日出发20天游程
问 怎么样编写程序能让电脑顺序安排排班 适当做出甲乙丙 是否能用的判断
我一开始是
建一个表 Schedule(id,guideid,groupid,udate,flag)(ID,导游编号,团号,出游日期,FLAG)
每个N天团队,对应N条记录 也就是2天的团队 就生成2条udate不同的记录。
where 的时候查询M天空闲 可以用M个and 连接
也就是说 如果查10-6到10-9号是否有空带团只需查询这段日子他有没有已经带了团
where udate<>'2007-10-06" and udate<>'2007-10-07" and udate<>'2007-10-08" and udate<>'2007-10-09"
这样的坏处是,当数据量比较大的时候,查询的时候有延时。但是是可以计算的,因为M天的团也就判断了M次。
好处是,表结构简单,容易查询该导游的记录,新建记录的时候也简单,只要插入M天记录就行了。
但是这样一个很麻烦的问题就是 只能判断这个导游能否带团,而不能列出所有能带团的导游名单。请高手帮忙下