现有几个表共用一个分类表, 
想将这几个表的分类汇总结果放在一个页面(同一个表格)中输出, 
有什么好的解决办法吗? 
问题好象主要出在where子句上, 
如果仅是一个表tb2使用一个分类表tb1,可以用 
select sum(tb2.col3) from tb1,tb2 where tb1.col=tb2.col group by 
tb1.col 
的形式,如果是两个表tb2,tb3使用一个分类表tb1,却无法使用 
select sum(tb2.col3),sum(tb3.col5) from tb1,tb2,tb3 where 
tb1.col=tb2.col and tb1.col=tb3.col group by tb1.col 
的形式,该语句运行后的数据明显错误, 
不知是什么原因? 
如何解决? 

解决方案 »

  1.   

    补充:
    要求用一个sql语句解决以上问题,
    谢谢
      

  2.   

    先group再joinselect a.col,b.col3,c.col5 from tb1 a
    join (select col,SUM(col3) col3 from tb2 group by col) b on a.col=b.col
    join (select col,SUM(col5) col5 from tb3 group by col) c on a.col=c.col
      

  3.   

    忘了说了,
    数据库是access,
    该语句运行错误,
    请问access下sql语句该如何写呢?
      

  4.   

    最好是access和sqlserver都能运行的语句,
    如果只能用在sqlserver上的话,
    移植会出现麻烦的。
    关于数据库表结构及数据,可以参考以下数据:
    表tb1,一个文本字段col:
    col
    a
    b
    表tb2,一个文本字段col和一个数字字段col3:
    col col3
    a   1
    a   2
    b   3
    b   4
    表tb3,一个文本字段col和一个数字字段col5:
    col col5
    a   5
    a   6
    b   8执行sql语句后,需要得到查询结果:
    col sumtb2 sumtb3
    a   3      11
    b   7      8
      

  5.   

    可以使用OPENROWSET语句规避两种数据库语法不同的问题。SELECT a.*
    FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
       'c:\MSOffice\Access\Samples\northwind.mdb';'admin';'mypwd', Orders) 
       AS a
      

  6.   

    select a.*,b.sumtb2,c.sumtb3
    from  
    (tb1 a  inner join 
    (select col,sum(col3) as sumtb2 from tb2 group by col) b 
    on a.col=b.col) 
    inner join 
    (select col,sum(col5) as sumtb3 from tb3 group by col) c
    on a.col=c.col楼主,给分吧。下午下班希望看到分数,嘿嘿。