数据库里有两张表:表1(语文)姓名        语文
陈一         60
谢二         70
张三         80
李四         90
表2(数学)姓名        数学
谢二         70
张三         80
李四         90现在,想生成这样的报表:
姓名        语文        数学
陈一         60               (因为数学表里没有他的记录,所以为空)
谢二         70         70
张三         80         80
李四         90         90请问:sql语句应该怎么来写?或者用VB应该怎么来解决?谢谢。。
(注:因工作关系不可更改表结构)

解决方案 »

  1.   

    select 姓名,表1.语文,表2.数学
    from 表1,表2
    where 表1.姓名=表2.姓名
      

  2.   

    SELECT A.姓名,A.语文,B.数学 FROM 表1 A LEFT JOIN 表2 B ON A.姓名=B.姓名 WHERE B.姓名 IS NULL
    UNION
    SELECT A.姓名,A.语文,B.数学 FROM 表1 A INNER JOIN 表2 B ON A.姓名=B.姓名
      

  3.   

    谢谢楼上的两位。。
    WHERE B.姓名 IS NULL
    UNION
    SELECT A.姓名,A.语文,B.数学 FROM 表1 A INNER JOIN 表2 B ON A.姓名=B.姓名
    这句看不懂,是什么意思?
    有更简洁的吗?
      

  4.   

    SELECT A.姓名,A.语文,B.数学 FROM 表1 A LEFT JOIN 表2 B ON A.姓名=B.姓名 WHERE B.姓名 IS NULL
    UNION
    SELECT A.姓名,A.语文,B.数学 FROM 表1 A INNER JOIN 表2 B ON A.姓名=B.姓名
    ====================
    同意!
      

  5.   

    在MS SQL SEVER中
    select SELECT A.姓名,A.语文,B.数学 FROM A,B where A.姓名*=B.姓名
    试试吧
      

  6.   

    不好意思,上面多写了一个select,我试过了,可以的,但注意往表格里填写时,陈一的数学是NULL,
      

  7.   

    在vb+access里试过了,可以这样写:
    select 表1.姓名,语文,表2.数学 from 表1 left join 表2 on 表1.姓名= 表2.姓名
      

  8.   

    select 姓名,isnull(表1.语文,0),isnull(表2.数学,0)
    from 表1,表2
    where 表1.姓名=表2.姓名
      

  9.   

    谢谢楼上的所有兄弟,还请看这贴:
    http://community.csdn.net/Expert/topic/3249/3249903.xml?temp=.8575556
      

  10.   

    select 姓名,isnull(表1.语文,''),isnull(表2.数学,'')
    from 表1,表2
    where 表1.姓名=表2.姓名
    这样就OK
      

  11.   

    对于,本文的进一步,数据库有一张表,结构与本文所述,不同ID,Name,Score1,......ScoreN
    1
      

  12.   

    刚没发完,接前文。数据库有一张表,结构与本文所述,不同ID,Name,subject, Score
    1  张1  科目1     20
    2  张1  科目2     20
    3  张1  科目3     20
    4  张2  科目1     20
    如何实现下面方式显示:ID,Name, 总成绩(各科目成绩和),科目1成绩,科目2成绩,科目3成绩
    1  张1                        20            20      20     
    4  张2                        20            20      20  
      

  13.   

    select * from (select name from 表1 union select name from 表2) a
    left join 表1 b where a.name=b.name
    left join 表2 c where a.name=c.name
      

  14.   

    樓上的有點問題:
    select a.姓名,b.語文,c.數學 
    from (select 姓名 from 表1 union select 姓名 from 表2) a
    left join 表1 b on a.姓名=b.姓名
    left join 表2 c on a.姓名=c.姓名