表1(培训课程表):
培训ID  培训课程代码  开始日期  结束日期  学时  老师  培训地点  是否周末表2(培训记录表):
培训ID  培训期次  培训类别 培训名称  开始日期  结束日期  合格分数  是否发布成绩  表3:
老师代码  老师名字现在我要查询下面的形式:老师名字  常规课时  周末课时 
求教现在我该如何写着个sql语句?
因为我对sqlserve2005 和sql语句实在不怎么会,向各位大神请教下

解决方案 »

  1.   

    这个,你可以转移到SQL区去提问  会较快得到满意答案
      

  2.   


    declare @表1 table 
    (
    培训ID int,培训课程代码 varchar(3),
    开始日期 varchar(10),结束日期 varchar(10),
    学时 int,老师 varchar(2),
    培训地点 varchar(6),是否周末 varchar(2)
    )
    insert into @表1
    select 1,'001','2012-01-01','2012-01-08',5,'01','会议室','是' union all
    select 2,'002','2012-01-01','2012-01-08',6,'01','会议室','是' union all
    select 3,'003','2012-01-01','2012-01-08',7,'02','会议室','否' union all
    select 4,'004','2012-01-01','2012-01-08',8,'03','会议室','否'declare @表3 table 
    (
    老师代码 varchar(2),
    老师名字 varchar(6)
    )
    insert into @表3
    select '01','张三' union all
    select '02','李四' union all
    select '03','王五'select 老师名字,常规课时,周末课程 from 
    (
    select null as 常规课时,培训课程代码 as 周末课程,老师  
    from @表1 where 是否周末='是'
    union all 
    select 培训课程代码 ,null,老师 from @表1 where 是否周末='否'
    ) aa 
    left join @表3 bb on aa.老师=bb.老师代码
    /*
    老师名字   常规课时 周末课程
    ------ ---- ----
    张三     NULL 001
    张三     NULL 002
    李四     003  NULL
    王五     004  NULL
    */
      

  3.   

    select 
      表3.老师名字,
      case when 是否周末=是 then 表1.学时 end,
      case when 是否周末=否 then 表1.学时 end
    from 表1,表3
    where 表1.老师代码=表3.老师代码
      

  4.   

    这是个三表连接问题,select  你所需要的标识列 from 表1 inner join 表2 on 相同的属性 inner join 表3 on 相同的属性 如有需要后还可以加where 条件语句