A表      
banji  yuwen  shuxue    
一年级一班  100001  100006    
一年级二班  100002  100003    
一年级三班  100001  100004    
一年级四班  100005  100003    
一年级五班  100002  100004    
一年级六班  100005  100006    
     
     
     
B表      
laoshixuehao    xingming  nianling    
100001       张三  25    
100002       李四  45    
100003       王五  28    
100004       赵六  50    
100005       吴七  40    
100006       刘八  48    
     
     
     
求sql查询得下表     
banji  语文老师姓名  年龄  数学老师姓名  年龄  
使用了 如下,结果不行。求助  
select *****   
from  A as yu,a as shu,b  
where   
yu.yuwen = b.laoshixuehao  
or shu.shuxue = b.laoshixuehao 

解决方案 »

  1.   

    select a.banji,
           (select b.xingming from  b where a.yuwen = b.laoshixuehao) 语文老师姓名,
           (select b.nianling from  b where a.yuwen = b.laoshixuehao) 年龄,
           (select b.xingming from  b where a.shuxue = b.laoshixuehao) 数学老师姓名,
           (select b.nianling from  b where a.shuxue = b.laoshixuehao) 年龄
      from  a
      

  2.   


    select A.banji,B.xingming as yuwen_xingming ,B.nianling as yuwen_nianling
                             C.xingming as shuxue_xingming ,C.nianling as shuxue_nianling
      from A, B, B C
      where A.yuwen=B.laoshixuehao and A.shuxue=C.laoshixuehao;
      

  3.   


    select A.banji,B.xingming as yuwen_xingming ,B.nianling as yuwen_nianling,
                C.xingming as shuxue_xingming ,C.nianling as shuxue_nianling
      from A, B, B C
      where A.yuwen=B.laoshixuehao and A.shuxue=C.laoshixuehao;
      

  4.   

    SELECT A.BANJI,
           MAX(CASE
                 WHEN A.YUWEN = B.LAOSHIXUEHAO THEN
                  B.XINGMING
               END) 语文老师姓名,
           MAX(CASE
                 WHEN A.YUWEN = B.LAOSHIXUEHAO THEN
                  B.NIANLING
               END) 语文老师年龄,
           MAX(CASE
                 WHEN A.SHUXUE = B.LAOSHIXUEHAO THEN
                  B.XINGMING
               END) 数学老师姓名,
           MAX(CASE
                 WHEN A.SHUXUE = B.LAOSHIXUEHAO THEN
                  B.NIANLING
               END) 数学老师年龄
      FROM A_CLASS A,B_TEACHER B
     GROUP BY A.BANJI;
      

  5.   

    select A.banji,B.xingming as yuwen_xingming ,B.nianling as yuwen_nianling,
                C.xingming as shuxue_xingming ,C.nianling as shuxue_nianling
      from A, B, B C
      where A.yuwen=B.laoshixuehao and A.shuxue=C.laoshixuehao;
      

  6.   

    select banji 班级,max (decode( a.yuwen,b.laoshixuehao , b.xinming ))语文老师,
           max (decode( a.yuwen,b.laoshixuehao , b.nianling ))年龄,
           max (decode( a.shuxue,b.laoshixuehao , b.xinming ))数学老师,
           max (decode(a.shuxue,b.laoshixuehao , b.nianling ))年龄
    from a,b group by banji order by banji