数据库sql难题---急 急 十万火急 !!! 在线等答案 ( 积分: 200 )

  • 主题发起人 主题发起人 windowboy
  • 开始时间 开始时间
W

windowboy

Unregistered / Unconfirmed
GUEST, unregistred user!
现有一个SQL难题.<br>表A中有如下字段:id(number),code(varchar),type(number),start_tm(varchar),end_tm(varchar),start_week(number),end_week(number).<br>code为代码,type为类型(只有1,和2),start_tm为开始时间从0000-2400,end_tm为结束时间从0000-2400,start_week为开始星期从1-7,end_week为结束星期从1-7.<br>如(1,'AAAAA',1,'0000','2400',1,7)表示代码为'AAAAA'商家当类型为1时的有效时间是从星期一的'0000'到'2400'也就是从零点到24点,到星期日的'0000'到'2400'也就是从零点到24点;<br>现在要求查出表中同一商家有效时间重叠‘交叉的记录。类型不要求相同<br>有这几条记录<br>(2,'AAAAA',1,'0000','2000',1,7)与(3,'AAAAA',2,'1800','0000',1,7)是交叉<br>(4,'AAAAA',1,'0000','2400',1,7)与(5,'AAAAA',2,'0800','2000',1,7)重叠
 
太难了,帮你顶<br>------------------------------------------------------<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://www.waibaoinfo.com&nbsp;外包信息网
 
这个也算难题?<br>逻辑很清楚啊
 
楼上那位兄弟,能不说的具体点&nbsp;把SQL语句供奉出来。谢了
 
Select&nbsp;a.*,b.*&nbsp;from&nbsp;table&nbsp;a,table&nbsp;b&nbsp;where&nbsp;a.code=b.code&nbsp;and&nbsp;((a.start_week&lt;=b.start_week&nbsp;and&nbsp;a.end_week&gt;=b.end_week)&nbsp;---星期重叠<br>or(a.start_week&lt;=b.start_week&nbsp;and&nbsp;a.end_week&gt;b.start_week))---星期交叉<br>and&nbsp;a.id&lt;&gt;b.id&nbsp;<br>and&nbsp;a.start_tm&lt;=b.start_tm&nbsp;and&nbsp;a.end_tm&gt;=b.end_tm&nbsp;--时间重叠<br>--a.start_tm&lt;=b.start_tm&nbsp;and&nbsp;a.end_tm&gt;b.start_tm--时间交叉<br><br>星期有重叠或交叉下才会有时间交叉或重叠
 
(3,'AAAAA',2,'1800','0000',1,7)这条记录有点不明白,开始时间从1800-0000你上面给的不是0000-2400吗?是否是有跨天?
 
http://www.yu-168.cn看
 
这个逻辑没有错但是我要得到的不是这样。<br>而是<br>(2,'AAAAA',1,'0000','2000',1,7)<br>(3,'AAAAA',2,'1800','0000',1,7)<br>(4,'BBBBB',1,'0000','2400',1,7)<br>(5,'BBBBB',2,'0800','2000',1,7)
 
是可以跨天
 
另外,时间是连续的,0090-2000&nbsp;和&nbsp;2000-0900&nbsp;是下正确的<br>不连续的时间和星期也要查出来
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部