有A B C三个表
A表:
f1(地区)     f2(正式员工数)
红桥区           4
南开区           23
朝阳区           5
----------------
B表
f1(地区)     f2(协查人员数)
南开区           16
朝阳区           10
----------------
C表
k1(城市) k2(地区)
天津     红桥区
天津     南开区
北京     朝阳区
-----------------
我想形成以下形式的统计结果
--------------------------------------------------
城市          正式员工数               协查人员数
--------------------------------------------------
天津          27                       16
北京          5                        10
--------------------------------------------------
请问这个select应该怎样写??

解决方案 »

  1.   

    select c.k1 城市,sum(a.f2) 正式员工数,sum(b.f2) 协查人员数 
    from a,b,c
    where c.k2=a.f1(+)
    and c.k2=b.f1
    group by c.k1
      

  2.   

    SELECT C.k1,sum(A.f2) 正式员工数,sum(B.f2) 协查人员数 
      FROM C,A,B
     WHERE C.k2 = A.f1 AND C.k2 = B.f1
     GROUP BY C.k1
      

  3.   

    select c.k1, sum(a.f2), sum(b.f2) from a, b, c where a.f1 = b.f1 and a.f1 = c.k2 group by c.k1
    看可不可以
      

  4.   

    请问c.k2=a.f1(+)这里的(+)是什么意思??
      

  5.   

    SELECT A.f1,sum(A.f2) 正式员工数,sum(B.f2) 协查人员数
      FROM A,B
     GROUP BY A.f1
      

  6.   


    --试一下,是不是这个意思?SELECT a.f1, sum(A.f2) 正式员工数, sum(B.f2) 协查人员数
      FROM A, B
     WHERE a.f1 = b.f1
     GROUP BY a.f1;
      

  7.   


    SELECT a.f1, sum(A.f2) 正式员工数, sum(B.f2) 协查人员数
      FROM A, B
     WHERE a.f1 = b.f1(+)
     GROUP BY a.f1;
      

  8.   

    select c.k1 城市,sum(a.f2) 正式员工数,sum(b.f2) 协查人员数 
    from a,b,c
    where c.k2=a.f1(+)
    and c.k2=b.f1(+)
    group by c.k1
    少写个(+)
    +表示外联接,写在右边是左连接
      

  9.   

    没有c表的话
    select f1 地区    ,sum(f2) 正式员工数 ,sum(f3)            协查人员数 
    from
    (
    slect a.f1,a.f2,0 f3
    from a
    union all
    select b.f1,0,b.f2
    from b )
    group by f1
      

  10.   


    SELECT A.f1,sum(A.f2) 正式员工数,sum(B.f2) 协查人员数
      FROM A,B
     GROUP BY A.f1
    或者
    SELECT a.f1, sum(A.f2) 正式员工数, sum(B.f2) 协查人员数
      FROM A, B
     WHERE a.f1 = b.f1
     GROUP BY a.f1;用a.f1分组的话要是b.f1中出现a.f1没有的地区如“河北区”咋办阿?这样“河北区”就不会被查询出来吧?
      

  11.   


    select f1 地区    ,sum(f2) 正式员工数 ,sum(f3)            协查人员数 
    from
    (
    slect a.f1,a.f2,0 f3
    from a
    union all
    select b.f1,0,b.f2
    from b )
    group by f1正解:)
    感谢hebo2005和大家的帮助