四个表如下:学生信息表(学号,姓名)语文成绩表(学号,姓名,语文成绩) 数学成绩表(学号,姓名,数学成绩) 英语成绩表(学号,姓名,英语成绩) 要求一条SQL语句得到如下情况,(提示:有学生缺考的情况)学号,姓名,语文成绩,数学成绩,英语成绩请高手帮帮忙

解决方案 »

  1.   

    join  join 再 join .
      

  2.   

    左join 右join 左右join 再join 
      

  3.   

    学生信息表 left join 后面的几个表,关联字段用学号
      

  4.   


    select a.学号,a.姓名,b.语文成绩,c.数学成绩,d.英语成绩
    from 学生信息表 a left join 语文成绩表 b on a.学号=b.学号
    left join 数学成绩表 c on c.学号=a.学号
    left join 英语成绩表 d on d.学号=a.学号
      

  5.   

    select a.学号,a.姓名,b.语文成绩,c.数学成绩,d.英语成绩 
    from 学生信息表 a left join 语文成绩表 b on a.学号=b.学号
           left join 数学成绩表 c  b.学号=c.学号
           left join 英语成绩表 d  c.学号=d.学号
      

  6.   

    select a.学号,a.姓名,b.语文成绩,c.数学成绩,d.英语成绩 
    from 学生信息表 a left join 语文成绩表 b on a.学号=b.学号 left join 数学成绩表 c on a.学号=c.学号 left join 英语成绩表 d on a.学号=d.学号
      

  7.   

    select 学生信息表.学号,学生信息表.姓名,
           isnull(语文成绩,'缺考'),isnull(数学成绩,'缺考'),isnull(英语成绩,'缺考')
    from 学生信息表 Left Join 语文成绩表 on 学生信息表.学号=语文成绩表.学号
                    Left Join 数学成绩表 on 学生信息表.学号=数学成绩表.学号
                    Left Join 英语成绩表 on 学生信息表.学号=英语成绩表.学号
      

  8.   

    SELECT 学号,姓名,语文成绩,数学成绩,英语成绩
    FROM   学生信息表 LEFT JOIN 语文成绩表 ON 学生信息表.学号=语文成绩表.学号
                       LEFT JOIN 数学成绩表 ON 学生信息表.学号=数学成绩表.学号
                       LEFT JOIN 英语成绩表 on 学生信息表.学号=英语成绩表.学号
    WHERE ISNULL(语文成绩表.语文成绩) OR
          ISNULL(数学成绩表.数学成绩) OR 
          ISNULL(英语成绩表.英语成绩)
      

  9.   

    select stuInfo.stuNo,stuInfo.stuName,chinese.chineseExam,english.englishExam,math.mathExam
    from stuInfo,chinese,english,math
    where stuInfo.stuNo=chinese.stuNo
       and stuInfo.stuNO=english.stuNo
       and stuInfo.stuNo=math.stuNo
      

  10.   

    Select 学生信息表.学号,学生信息表.姓名, 
          isnull(语文成绩,'缺考'),isnull(数学成绩,'缺考'),isnull(英语成绩,'缺考') 
    From 学生信息表 Left Outer Join 语文成绩表 on 学生信息表.学号=语文成绩表.学号 
                    Left Outer Join 数学成绩表 on 学生信息表.学号=数学成绩表.学号 
                    Left Outer Join 英语成绩表 on 学生信息表.学号=英语成绩表.学号
      

  11.   

    select 学生信息表.学号,学生信息表.姓名, 
          isnull(语文成绩,'缺考'),isnull(数学成绩,'缺考'),isnull(英语成绩,'缺考') 
    from 学生信息表 Left Join 语文成绩表 on 学生信息表.学号=语文成绩表.学号 
                    Left Join 数学成绩表 on 学生信息表.学号=数学成绩表.学号 
                    Left Join 英语成绩表 on 学生信息表.学号=英语成绩表.学号主要是要用到left join 其意思是完全保留左边的信息。
      

  12.   

    select a.学号,a.姓名,b.语文成绩,c.数学成绩,d.英语成绩
    from 学生信息表 a left join 语文成绩表 b on a.学号=b.学号
    left join 数学成绩表 c on c.学号=a.学号
    left join 英语成绩表 d on d.学号=a.学号
    正解
      

  13.   


    select 
    a.学号,
    a.姓名,
    isnull(b.语文成绩,0) 语文成绩,
    isnull(c.数学成绩,0) 数学成绩,
    isnull(d.英语成绩,0) 英语成绩
    from 学生信息表 a 
    left outer join 语文成绩表 b on b.学号=a.学号 
    left outer join 数学成绩表 c on c.学号=a.学号 
    left outer join 英语成绩表 d on d.学号=a.学号 好像楼主设计的成绩表里姓名是多余的
      

  14.   

    已经有人回复了LZ的问题了,
    我就不说这个问题了,
    但是很显示LZ很明显还是初学数据库
    我建议LZ看看三大范式的内容,
    对你数据库建表很有帮助的.
      

  15.   

    select a.学号,a.姓名,b.语文成绩,c.数学成绩,d.英语成绩 
    学生信息表  as a left join 语文成绩表  as b  on a.学号=b.学号
    left join 数学成绩表 as c on a.学号=c.学号 left join 英语成绩表 as c
    on a.学号=c.学号
      

  16.   

    select 
        a.学号,a.姓名,isnull(b.语文成绩,0) 语文成绩,isnull(c.数学成绩,0) 数学成绩,isnull(d.英语成绩,0) 英语成绩 from 学生信息表 a 
    left join 语文成绩表 b on b.学号=a.学号 
    left join 数学成绩表 c on c.学号=a.学号 
    left join 英语成绩表 d on d.学号=a.学号