各位大侠,我做的程序count部分有一点令我十分困惑,所以想请各位大侠帮助结局,谢啦!
代码如下:select count(b.jh),count(c.jh) from
(select  * from( select skgysjb.id,skgysjb.jh ,bzqc."d_date" d_date,dd_zpxx.zprq  from  skgysjb left outer join bzqc on (skgysjb.id=bzqc."jing_id") left outer join dd_zpxx on skgysjb.id=dd_zpxx.id ) t where t.zprq>=to_date('2011-11-1','yyyy/mm/dd') and t.zprq<=to_date('2011-11-19','yyyy/mm/dd')  ) b , 
(select *  from( select skgysjb.id,skgysjb.jh ,bzqc."d_date" d_date,dd_zpxx.zprq  from  skgysjb left outer join bzqc on (skgysjb.id=bzqc."jing_id") left outer join dd_zpxx on skgysjb.id=dd_zpxx.id ) t where t.d_date>=to_date('2011-11-1','yyyy/mm/dd') and t.d_date<=to_date('2011-11-19','yyyy/mm/dd') ) c 
为什么这样查出来虽然有结果但是不正确,既不是b的jh的数量也不是 c的jh的数量??

解决方案 »

  1.   

    一次只能count一个。
    要么count(b.jh)
    要么count(b.jh)
      

  2.   

    无论count(b.jh)还是(c.jh),我想最终结果应该是一致的。
    应该是两个中间表的迪卡尔乘积中记录的个数。
      

  3.   

    不用忽略NULL
    b.jh和c.jh中null的数目不一样就有可能不相等
      

  4.   

    恩,刚刚试过了,结果相等是count(b.jh),count(c.jh)的乘积,可是还是不大明白,麻烦能解释一下吗
      

  5.   


    from 后面的sql子句并没有连接条件,所以采用的是迪卡尔乘积来连接所有子表。
    建议你查下什么是迪卡尔乘积。
      

  6.   

    笛卡尔积 SELECT * FROM table1 CROSS JOIN table2 与 SELECT * FROM table1,table2相同
    所以我之前的那个就成了两个结果的积了
    谢谢各位了!!!