有3个表,A,B,C。其中A表的格式为
时间        过路费 ……(以及若干备注之类的列)
2005-1-1      5
2005-1-1      10
2005-1-2      5 
2005-1-3      8
2005-1-5      7B表的格式为
时间        汽油费 ……(和上表一样一些无关的列)
2005-1-1      110
2005-1-4      127
2005-1-6      119C表的格式为
时间        其他费用……(和A表一样一些无关的列)
2005-1-2      200
2005-1-2      18
2005-1-2      112
2005-1-7      158现在想计算一下每天的开支,通过查询A、B、C表(select?)得出以下表:时间      过路费      汽油费      其他费用      合计
2005-1-1    15         110           0           125
2005-1-2    5           0           330          335
2005-1-3    8           0            0            8
2005-1-4    0          127           0           127
2005-1-5    7           0            0            7
2005-1-6    0          119           0           119 
2005-1-7    0           0           158           0请问SQL语言如何写啊?希望能详细点!不胜感激!!

解决方案 »

  1.   

    SELECT A.时间,过路费,汽油费,其他费用,(过路费+汽油费+其他费用) AS 合计 FROM A, B, C WHERE A.时间=B.时间 AND B.时间=C.时间
      

  2.   

    可以使用any这个字试试!~不知道可不可以哦!~SELECT A.时间,过路费,汽油费,其他费用,(过路费+汽油费+其他费用) AS 合计 FROM A, B, C WHERE A.时间=any B.时间 AND B.时间= any C.时间
      

  3.   

    楼上的方法不行啊……比如说在2005-1-6这个时间仅仅在表B中有记录,用你的方法好像会把2005-1-6的消费记录漏掉
    ————————————————————————————————————————————用full outer join ,如果是access,就比较麻烦,因为access没有全外连接,只能left加right连接代替。
      

  4.   

    象这种情况,开一个汇总表比较合适,只需一次更新,可以多次查询:先按照日期序列做 INSERT,再根据 A、B、C 的汇总做 UPDATE,最后将几列加起来 UPDATE 到汇总列。
      

  5.   

    如果第一个表的时间就无整的话,作基表,用LEFT JOIN就可以了..SELECT A.时间,过路费,汽油费,其他费用,(过路费+汽油费+其他费用) AS 合计 FROM A left join b on a.时间=B.时间 left join c on a.时间=C.时间
      

  6.   

    http://www.applevb.com/art/sql.htm
    --------------
    这个SQL的文章很好的。