日期:2014-05-17  浏览次数:20774 次

关于oracle 中count部分
各位大侠,我做的程序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的数量??



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

------解决方案--------------------
探讨

引用:

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

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