我就想知道(+)的意思,好像不是简单的左连接或外连接的关系吧。。以下是用(+) 写的:
SELECT T3.*, T4.depa_name depa_samezone_name
FROM (SELECT T1.*, T2.basi_name depa_level_name
FROM (SELECT a.depa_id,
a.depa_code,
a.depa_number,
a.depa_type,
a.depa_level,
a.depa_fullname,
a.depa_name,
a.depa_samezone,
a.depa_download,
b.basi_name depa_type_name
FROM Department a, Basic b
WHERE 1 = 1
AND a.depa_type = b.basi_id) T1,
Basic T2
WHERE T1.depa_level = T2.basi_id(+)) T3,
Department T4
WHERE T3.depa_samezone = T4.depa_id(+)
ORDER BY T3.depa_code, T4.depa_code, T3.depa_number
以下是用right join写的:
SELECT T3.*, T4.depa_name depa_samezone_name
FROM (SELECT T1.*, T2.basi_name depa_level_name
FROM (SELECT a.depa_id,
a.depa_code,
a.depa_number,
a.depa_type,
a.depa_level,
a.depa_fullname,
a.depa_name,
a.depa_samezone,
a.depa_download,
b.basi_name depa_type_name
FROM Department a, Basic b
WHERE 1 = 1
AND a.depa_type = b.basi_id) T1 right join
Basic T2
on T1.depa_level = T2.basi_id) T3
right join
Department T4
on T3.depa_samezone = T4.depa_id
ORDER BY T3.depa_code, T4.depa_code, T3.depa_number
但是得到的结果完全不同。。谁能帮忙解释一下。。
SELECT T3.*, T4.depa_name depa_samezone_name
FROM (SELECT T1.*, T2.basi_name depa_level_name
FROM (SELECT a.depa_id,
a.depa_code,
a.depa_number,
a.depa_type,
a.depa_level,
a.depa_fullname,
a.depa_name,
a.depa_samezone,
a.depa_download,
b.basi_name depa_type_name
FROM Department a, Basic b
WHERE 1 = 1
AND a.depa_type = b.basi_id) T1,
Basic T2
WHERE T1.depa_level = T2.basi_id(+)) T3,
Department T4
WHERE T3.depa_samezone = T4.depa_id(+)
ORDER BY T3.depa_code, T4.depa_code, T3.depa_number
以下是用right join写的:
SELECT T3.*, T4.depa_name depa_samezone_name
FROM (SELECT T1.*, T2.basi_name depa_level_name
FROM (SELECT a.depa_id,
a.depa_code,
a.depa_number,
a.depa_type,
a.depa_level,
a.depa_fullname,
a.depa_name,
a.depa_samezone,
a.depa_download,
b.basi_name depa_type_name
FROM Department a, Basic b
WHERE 1 = 1
AND a.depa_type = b.basi_id) T1 right join
Basic T2
on T1.depa_level = T2.basi_id) T3
right join
Department T4
on T3.depa_samezone = T4.depa_id
ORDER BY T3.depa_code, T4.depa_code, T3.depa_number
但是得到的结果完全不同。。谁能帮忙解释一下。。
解决方案 »
- oracle10g透明网关for SqlServer 分布式事务
- 这样创建自增长不是很好,因为在长到009的时候,就会到0010,而实际上应该是010,我应该如何创建呢?
- oracle 用户的只读权限
- ORACLE修改参数设置后,无法启动是什么问题?
- 关于exp和imp命令的使用问题
- 请教:Oracle数据库在什么情况下,会自动加出来些莫名其妙的表?
- _T("")是什么意思啊!
- 请各位帮我看一下,有关count在不同优化模式下的性能问题?
- 交叉表(其实是一个视图)的建立____help,help,help!!!_study,study,you and me!!!
- Oracle表中如何存储多个checkbox类的数据?
- Oracle Developer 2000 怎样屏蔽报表列印功能?
- 有没有高手在自己的电脑上一起安装ORACLE9I和ORACLE11G的?
你用 left join 查结果应该是一致的