一个校对表
Proofread主键 对错状态 错误是属于哪个工程的 行 列
ProPK status PrjGUID x y
1 1 AAA 1 1
2 1 AAA 1 2
3 0 AAA 2 1status=1表示该行列是错误的
比如,想搜AAA工程有多少个错误select count(ProPK) from Proofread where PrjGUID='AAA'and status=1
group by prjguid
结果,会得出
2但是,如果想搜BBB工程的,因为BBB工程在该表里没有记录,想让结果得出0,但查询结果是什么也没有。
什么也没有,也不是NULL。这涉及到我的另一个问题
http://topic.csdn.net/u/20120727/17/a458070e-e2a4-4aa1-9f2e-9cee83da36c7.html我想让结果为0,怎么弄呢?

解决方案 »

  1.   

    select a.PrjGUID,count(b.PrjGUID) 
    from project a left join Proofread b on a.PrjGUID=b.PrjGUID
    group by  a.PrjGUID试试 
      

  2.   

    如果结果肯定有0,为什么会没有呢你写select count(ProPK) from Proofread where 1=2都会有个0,别说是其他条件了
      

  3.   

    select a.PrjGUID,count(b.PrjGUID)  
    from project a left join Proofread b on a.PrjGUID=b.PrjGUID
    group by a.PrjGUID
      

  4.   

    但是,如果想搜BBB工程的,因为BBB工程在该表里没有记录,想让结果得出0,但查询结果是什么也没有。
    什么也没有,也不是NULL既然表中没有记录。怎么查询BBB这个ID?除非你另给一个表,表中有你全部的ID,包括AAA,BBB。否则得不出你要的结果。
      

  5.   


    select count(ProPK) from Proofread where PrjGUID='BBB'and status=1
    group by prjguid
    --你都肯定表中没有BBB的记录那这个结果不就是0
      

  6.   

    我擦,这么多人都没看出来问题where 后面指定了PrjGUID的值 就不需要再group by 这个字段了直接
    select count(ProPK) from Proofread where PrjGUID='AAA'and status=1