select a.coll,b.count(*) from tab1 a,tab2 b where ... group by a.coll;
试试

解决方案 »

  1.   

    应该就错在b.count(*),你试试改成count(*)
      

  2.   

    to:qiuyang_wang(小数点) 这样写不行!
    to: linjian225()  这样怎么知道count(*)是针对哪个表???
    是不是count(*)就不能跟着表名用?
    我改成count(b.col2)可以通过。可是b表没有主键,这样的结果肯定不对!
    高手指点!谢谢!!!
      

  3.   

    求count(*)的时候,如果还有其他字段,需要用group by。
    select a.col1,b.count(*) from tab1 a,tab2 b where ... 
    group by a.col1
      

  4.   

    这样写就OK了select a.col1,(select count(*) from tab2 b where ...) from tab1 a where ...
      

  5.   

    你的count(*)是表b的所有的纪录数还是a、b关联后的b的复合条件的纪录数?
      

  6.   

    我想应该是我说的后者的情况吧:
    SQL> select * from test3;        ID DOCTIME           P1 NEWZYZ               ZYZ1
    ---------- --------- ---------- -------------------- ----------
            22 01-JUL-01            2002-01-01
            22 01-JUL-01            1999-01-01
            22 01-JUL-01            2000-01-01
            22 24-SEP-02          1 asd                  sdf
            22 24-SEP-02          2 adfsd                dfsdf
            22 24-SEP-02          4 asd%df               dsfdsf%
            22 01-JUL-01            2002-01-01
            22 01-JUL-01            2001-01-018 rows selected.SQL> select * from test1;        ID ZYZ1               P1 DOCTIME   LASTTIME
    ---------- ---------- ---------- --------- ---------
             1 333               333 01-JUL-02 01-JUL-02
             1 333               333 01-MAY-02 01-MAY-02
             1 333               333 20-AUG-02 20-AUG-02
            62 sdfds               6 01-JUL-02 01-JUL-02
            63 sdfds               6 01-JUL-02 01-JUL-02
             1 333               333 01-JUL-02 01-JUL-02
            83 sdfds               6 01-JUL-02 01-JUL-02
            91 sdfds               6 01-JUL-02 01-JUL-02
            92 sdfds               6 01-JUL-02 01-JUL-02
            93 sdfds               6 22-AUG-02 22-AUG-02
            94 sdfds               6 02-AUG-02 02-AUG-02        ID ZYZ1               P1 DOCTIME   LASTTIME
    ---------- ---------- ---------- --------- ---------
             2                       01-SEP-02 01-SEP-02
             1 333               333 01-SEP-02 01-SEP-02
             3                       01-SEP-02 01-SEP-02
             4 temp                5 01-JAN-02 01-JAN-02
             5 字符集                01-JUL-02 01-JUL-02
            16 sdfdsfsdf             01-JUL-02 01-JUL-02
            17 sdfdsfsd43            01-JUL-02 08-AUG-02
               43f        22 I'm a boy
            23 I'm a boy;        ID ZYZ1               P1 DOCTIME   LASTTIME
    ---------- ---------- ---------- --------- ---------
               '
    20 rows selected.SQL> select a.id,count(b.id) from test1 a,test3 b where a.id=b.id group by a.id;
            ID COUNT(B.ID)
    ---------- -----------
            22           8注意a和b的关联不能出现多对多的情况,也就是要避免发生迪卡尔积的现象