▲▲▲▲▲复杂Sql语句求救,高手看过来!▲▲▲▲▲

dreamboat001 2005-03-22 01:21:09
辅导学校表A字段:a_id,a_name ...
学员表B字段:b_id,b_name,a_id ...
班次教学时间区间表C字段:c_id,c_type,start_time,end_time,a_id ...
班次表D字段:d_id,d_name,d_dd,d_ee,b_id,c_id ...
输入参数:b_id
输出:d_dd,d_ee,a_id,a_name,c_type,start_time,end_time
要求:
相同a_id,相同c_type当中,返回的信息对应c表中时间区间最靠近当前的一条信息(注意只有一条)
c表中通常存在有多个不同的a_id。
就是说,我想获取某个学员最近在各个辅导学校的辅导班的学习情况跟踪。
d_dd,d_ee,a_id,a_name,c_type,start_time,end_time
dd ee 1 aname1 type1 2000-1-1 2001-2-1
dd ee 1 aname1 type2 2000-1-5 2001-2-8
dd ee 2 aname2 type2 2000-1-1 2001-2-1
dd ee 2 aname2 type3 2000-1-23 2001-2-1
注:表c中,c_type相同的时间区间是没有重叠的。
最好是执行效率高的。谢谢高手!!!
...全文
234 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dreamboat001 2005-03-23
  • 打赏
  • 举报
回复
楼上的谢谢了
但是我的要求不是所有的上课情况都取出来,而是当前的上课情况,以前的上课情况不要。
meilian01 2005-03-23
  • 打赏
  • 举报
回复
select d.d_dd,d.d_ee,a.a_id,a.a_name,c.c_type,start_time,end_time
form A
left join d
on a.a_id = b.a_id
left join c on a.a_id = c.a_id
where b.b_id = b_id
dreamboat001 2005-03-23
  • 打赏
  • 举报
回复
up
dreamboat001 2005-03-23
  • 打赏
  • 举报
回复
楼上的,你的返回少了点,按照我要求的返回,就会产生多余的数据
再up。。。。。。。。。。。
xiaos139 2005-03-23
  • 打赏
  • 举报
回复
Select a_id,c_type,MAX(start_time)
From (select d.d_dd,d.d_ee,a.a_id,a.a_name,c.c_type,start_time,end_time
form A
left join d
on a.a_id = b.a_id
left join c on a.a_id = c.a_id
where b.b_id = b_id) X
Group By a_id,c_type
dreamboat001 2005-03-22
  • 打赏
  • 举报
回复
up
dreamboat001 2005-03-22
  • 打赏
  • 举报
回复
高手下班了???????
LoveLwn 2005-03-22
  • 打赏
  • 举报
回复
hehe wo up ge ba
dreamboat001 2005-03-22
  • 打赏
  • 举报
回复
怎么没有人?????????????

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧