是这样的,我有3个数据表,table1,table2,table3
table1的结构是这样的:id 是自动序号
spr sprm  id
1    阿弟  1
2   阿瑟   2
3  撒旦   3
0  空       4
table2的结构是这样的:id 是自动序号
yqr yqrm  id
1    阿瑟 1
2    阿弟   2
3   撒旦  3
4  健康    4
0  空       5
table3的结构是这样的:id 是自动序号
spr  yqr     zdfje             id
1     0        12                1
2      0        1212           2
3      0        1213           3
2      0        1212           4
1      0         1212            5
2      0        12121           6
2      0        833               7
3     0         3245            8
3     0         43534          9
0     1         2432          11
0     1          3232          12
0     3          2432          13
0     3          3242          14
0     2          3243          15
0     1          3212          16
0     3          3132          17
0     1          3232          18
0     2          3232          19
0     1          432          20
现在需要列出这样的结果,
sprm与yqrm相等的所有zdfje汇总!
例如:
sprm+yqrm   zdfje
 阿瑟           
 阿弟
 撒旦
 健康
请问,这应该如何实现呢?谢谢大家!

解决方案 »

  1.   

    直接用一个SQL语句无法实现。其实我个人认为,楼主的表格设计可能不合理,Table1和Table2完全是多余的,除非这儿的 spr 和 yqr 有明确的含义。如果这儿 spr 和 yqr 仅仅是一个编号,那么设计 Table1 和 Table2 就是多余的,只会将问题复杂话。
      

  2.   

    楼主试一下
    select sum(zdfje) from table3 a
    left join table1 b on a.spr=b.spr
    left join table2 c on a.yqr=c.yqr
    where b.sprm=c.yqrm
      

  3.   

    select e.sprm,sum(e.zdfje+f.zdfje) from (select a.sprm,b.zdfje from table1 a,table3 b where a.spr=b.spr) e,(select c.yqrm,d.zdfje from table2 c,table3 d where c.yqr=d.yqr) f
    where e.sprm=f.yqrm
    group by e.sprm不知道搂住是不是这个意思
      

  4.   

    select b.sprm,sum(zdfje) from table3 a
    left join table1 b on a.spr=b.spr
    left join table2 c on a.yqr=c.yqr
    where b.sprm=c.yqrm group by b.sprm
      

  5.   

    表master
    datet      jddw spr yqr jbr jcdd bz zdfje id
    1999-01-13    7 0 7 0 1 1 ¥284.00 13
    1999-01-13    8 2 0 0 1 2 ¥228.00 14
    1999-01-13    8 8 0 0 1 1 ¥279.00 15
    1999-01-13    4 0 6 0 1 1 ¥360.00 16
    1999-01-13   8 9 0 0 1 4 ¥255.00 17
    1999-02-28   8 1 0 17 5 1           ¥1,303.00 18
    1999-01-13   8 0 8 0 1 1 ¥240.00 19
    1999-01-13   8 0 9 0 1 5 ¥180.00 20
    1999-01-13   8 0 5 0 1 1 ¥229.00 21
    1999-01-13  8 0 5 0 1 1 ¥420.00 22
    表examine
    sprm spr spbg id
    王明 1 No 49
    地方 2 No 50
    计划 3 No 51
    呵呵 4 No 52
    三分 5 No 53
    斯蒂芬 6 No 54
    毒素发 7 No 55
    斯蒂 8 No 56
    其他 0 No 57表treat
    yqrrm ypr yqbg id
    地方 1 No 49
    计划 2 No 50
    王明 3 No 51
    斯蒂芬 4 No 52
    三分 5 No 53
    呵呵 6 No 54
    毒素发 7 No 55
    发给 8 No 56
    和文 9 No 57
    其他 0 No 58现在想列出所有的sprm和yqrm的zdfje汇总,请问该如何实现呢?我作个每个sprm与yqrm的分别汇总,语句如下:
    select examine.sprm,(select sum(master.zdfje) from master where master.spr=examine.spr) from examine
    select treat.yqrm,(select sum(master.zdfje) from master where master.yqr=treat.yqr) from treat
    现在需要做两个查询结果的汇总,请大家帮帮我,该如何实现呢?
      

  6.   

    examine和treat两表中的 “王明” 是合为一个 “王明”,同时 zdfje也和为一个值?
    sprm和yqrm又怎么区分?
      

  7.   

    sprm和yqrm又怎么区分?
    如果相同,保留一个!
      

  8.   

    UNION 运算符使您得以将两个或多个 SELECT 语句的结果组合成一个结果集。使用 UNION 组合的结果集都必须具有相同的结构。而且它们的列数必须相同,并且相应的结果集列的数据类型必须兼容。
    UNION 的结果集列名与 UNION 运算符中第一个 SELECT 语句的结果集中的列名相同。另一个 SELECT 语句的结果集列名将被忽略。默认情况下,UNION 运算符从结果集中删除重复的行。如果使用 ALL 关键字,那么结果中将包含所有行并且将不删除重复的行。 
    (SELECT * FROM TableA
     UNION ALL
     SELECT * FROM TableB
    )GROUP BY 和 HAVING 子句只能在单独的 SELECT 语句中指定。
      

  9.   

    我现在这样做!
    select esprm,sum(mzdfje) from (select examine.sprm as esprm,(select sum(master.zdfje) from master where master.spr=examine.spr) as mzdfje from examine
    union all
    select treat.yqrm,(select sum(master.zdfje) from master where master.yqr=treat.yqr) from treat) group by esprm
    可以实现我要的功能!
    谢谢大家!
    如果大家有什么好的办法,可以告诉我!
    谢谢大家!