用PL/SQL中,有两个表t_a,t_b,要从a中select count(id)的数,然后group by 地区,
然后选择a中的 count的字段,再有一个where 连接t_a,t_b,应该要怎么写呢?
我开始写的是:
select
  a.c_diqu, a.c_zongrs
from
  (select c_diqu as c_diqu,count(c_id)as c_zongrs from t_a)a,
  t_b b
where 
  a.c_id = b.c_pid出现的问题是:a.c_id出现无效的标志
请问各位高手,是什么问题?要怎么写才对?

解决方案 »

  1.   

    问题是where 不能作为count的条件,如果写成
    select a.c_xianjiuzdw as a.c_danwei,count(c_id) as c_zongrens from t_congyeryjbxx a,
    t_yidongjl b where a.c_id = b.c_pid group by a.c_xianjiuzdw
    这样的话,得出来的数据有误,一定要先得出count 的数据,再加入where
      

  2.   

    select
      a.c_diqu, a.c_zongrs
    from
      (select c_diqu as c_diqu,count(c_id)as c_zongrs from t_a)a,--没有group by
      t_b b
    where 
      a.c_id = b.c_pid--你在a里面没有select c_id这个字段,当然出错啦
      

  3.   

    加上a里面加上 select cid这个字段。再加上groupby就运行不了
      

  4.   

    你的表a中没有定义c_id这个字段,还有,没明白你要的结果是什么
      

  5.   

    select  a.c_diqu, a.c_zongrs
    from  (select c_diqu as c_id,count(c_id)as c_zongrs from t_a group by c_diqu)a,t_b b
    where  a.c_id = b.c_pid如果c_diqu,c_id是不同的列,就分别GROUP BY
      

  6.   

    分2步!
    第一,先要求出A表中c_id的个数
    然后再根据地区分组,
    第二,分组之后,再求出A表中c_id = B表中c_pid的A.c_id的数
      

  7.   

    改成group by c_diqu,c_id 
    如果你只对地区分组,1个分组里可能有多个c_id,所以你不能select c_id,试想对应1个c_id,那count(c_id)应该是多少,这是不合逻辑的;所以如果1个c_diqu只对应1个c_id,那就可以group by c_diqu,c_id
      

  8.   

    分2步!
    第一,先要求出A表中c_id的个数
    然后再根据地区分组,
    -------------------------------
    这样的话求出的是所有的c_id个数吗?应该是先分组再求每个分组的count吧
    第二,分组之后,再求出A表中c_id = B表中c_pid的A.c_id的数
    ------------------
    看不出来按地区分组后有什么作用,最好楼主能把你要的数据贴出来