各位大侠,我做的程序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的数量??
代码如下: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的数量??
解决方案 »
- 求解SQL语句的写法问题出在哪里
- dba_tab_modifications表不更新的问题
- 大家都进来看一下.怎么取前5条(表里的多个单位各取前3条)
- C++ ORACLE执行不了SQL语句,查询也得不到返回记录,真不明白!急
- C操作oracle数据库里,报“PCC-F-02044, CMD-LINE”错误
- 用Oracle建立在线归档数据库
- 递归返回查询中sql语句问题,谢谢
- 刚刚学习Oracle的菜问题,请进!
- ORACLE数据库,字段类型是VARCHAR2(20),里面显示的是时间,如何都统一为10位
- Oracle存储过程返回结果集的问题
- 关于一个表更新到另一个表中
- 脱机备份和脱机备份的恢复,除备份或恢复的用户外,其他用户还能访问数据库的吗
要么count(b.jh)
要么count(b.jh)
应该是两个中间表的迪卡尔乘积中记录的个数。
b.jh和c.jh中null的数目不一样就有可能不相等
from 后面的sql子句并没有连接条件,所以采用的是迪卡尔乘积来连接所有子表。
建议你查下什么是迪卡尔乘积。
所以我之前的那个就成了两个结果的积了
谢谢各位了!!!