为什么
select ids,names from a,b,c where a.id = b.a_id and b.id = c.b_id 可以查出来值
但是
select ids,names from a,b,c,d,e where a.id = b.a_id and b.id = c.b_id 查不出来值我知道是由于后两个表没关联的关系,但是为什么?
请给我解释一下原理~谢谢~
select ids,names from a,b,c where a.id = b.a_id and b.id = c.b_id 可以查出来值
但是
select ids,names from a,b,c,d,e where a.id = b.a_id and b.id = c.b_id 查不出来值我知道是由于后两个表没关联的关系,但是为什么?
请给我解释一下原理~谢谢~
解决方案 »
- sql*plus 创建数据库求检查
- RAISE_APPLICATION_ERROR抛出异常信息的时候如何实现用户友好信息提示,跪谢!
- 菜鸟提问:查询优化的一个想不明白的问题
- 帮我看下 ,解决了马上结贴!!!!!!!!!!
- job启动的问题
- 怎么查找索引在哪个段里面?
- 在SP中写文件的问题
- oracle里能用正则表达式和转义符吗
- 帮我看看这个,配置应该没问题,为什么还会有ORA-12154错误?
- 一个有难度的sql.如何构造
- 删错了表空间啦!!!
- insert into 表(字段) select 字段 from 表,出现ORA-00997: illegal use of LONG datatype
第二个SQL查出的结果应该>=第一个SQL的
对,第二个SQL是能查出结果的,但太大时会出不来,尤其是两个
假如按第一个是一条,d 5000条,e 5000条
那5000*5000=25000000太大了,受不了
修改成下面的格式:
SELECT IDS, NAMES
FROM A, B, C, D, E
WHERE A.ID = B.A_ID
AND B.ID = C.B_ID
AND A.ROWID = D.ROWID(+)
AND A.ROWID = E.ROWID(+)
因d,e两表由于没有用到,不仅sql冗余,而且容易挂机发生死锁,所以查不出来值。
它也不行:select ids,names from a,b,c,d where a.id = b.a_id and b.id = c.b_id;
所以sql的精确高效乃至良好的编程习惯的养成十分重要。
呵呵,我也不是太想这么写,因为条件是或者的关系
后面有个 or (a.id = d.a_id ....)
a.id = b.a_id and ((b.id = c.b_id and a.id = c.a_id) or (a.id= d.a_id ...)