同一语句表达的不同,引起结果的不同,急!

sten 2007-11-24 11:07:17
SELECT COUNT(p.prod_id) --结果1070877
FROM product p
JOIN party t ON t.party_id = p.owner_id
LEFT OUTER prod_2_addr a ON a.prod_id = p.prod_id
AND a.reason_cd = 1
LEFT OUTER JOIN (SELECT segment_id, party_id
FROM segment_member
WHERE segment_id IN (31, 32)) l ON l.party_id =
t.party_id
LEFT OUTER JOIN customer s ON p.prod_id = s.prod_id
WHERE s.serv_spec_id IN (467, 455, 456, 457)
AND p.prod_spec_id IN (1, 2);
--------------------------------------------------------------------------
SELECT count(p.prod_id) --结果303491
FROM product p,
party t,
prod_2_addr a,
(SELECT segment_id, party_id
FROM segment_member
WHERE segment_id IN
(31, 32)) l,
customer s
WHERE t.party_id = p.owner_id
AND a.prod_id = p.prod_id(+)
AND a.reason_cd = 1
AND l.party_id = t.party_id(+)
AND p.prod_id = s.prod_id
AND s.serv_spec_id IN (4, 5, 6, 7)
AND p.prod_spec_id IN (1, 2);

请大伙帮忙看看,请急的,为什么下面两个语句的执行结果会不一样?
第一条在9i下执行,结果为1070877, 第二条在8i下执行,结果为303491.
如果以第一条语句为标准,第二条语句哪里不对了,该如何改呢?谢谢!
...全文
142 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
sten 2007-11-24
  • 打赏
  • 举报
回复
另外,对比执行如下:
SELECT COUNT(p.prod_id)
FROM FROM product p,
party t,
(SELECT prod_id
FROM prod_2_addr
WHERE reason_cd = 1) a
WHERE t.party_id = p.owner_id
AND (a.prod_id = p.prod_id(+));--此时的结果为4232796
而语句:
SELECT COUNT(p.prod_id)
FROM product p
JOIN party t ON t.party_id = p.owner_id
LEFT OUTER prod_2_addr a ON a.prod_id = p.prod_id
AND a.reason_cd = 1--执行的结果是6449133
问题就从这里开始了,望有高手帮忙分析分析,不胜感谢!

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧