SELECT A.業務CD, B.業務名称 AS VZ業務情報_業務名称,
A.事業CD, C.事業名称 AS VZ事業情報_事業名称,
A.実施区分,VZコード.コード名称 実施区分名称, A.実施日,FROM VD実施日 A LEFT JOIN VZ業務情報 B ON A.業務CD = B.業務CD
LEFT JOIN VZ事業情報 C ON C.事業CD = A.事業CD
LEFT JOIN VZコード ON VZコード.コード種別ID = '400001'
AND VZコード.開始年月日<=?
AND (VZコード.終了年月日>=? OR VZコード.終了年月日 IS NULL)
AND VZコード.システムコード = A.実施区分
LEFT JOIN (SELECT VZコード.システムコード,VZコード.コード名称 FROM VZコード WHERE VZコード.コード種別ID = '300051'
AND VZコード.開始年月日<=?
AND (VZコード.終了年月日>=? OR VZコード.終了年月日 IS NULL))
実施場所情報 ON 実施場所情報.システムコード = A.実施場所CD
and A.実施日<='99999999'
and A.実施場所CD=?
ORDER BY A.実施日 desc,A.実施場所CD,A.時間FROM,A.時間TO,A.実施区分,A.業務CD,A.実施種別CD,A.事業CD,A.表示順上面是正确的SQL文,是改正之后的,但是如果第三个left join用下面的形式实行:
LEFT JOIN (SELECT VZコード.システムコード,VZコード.コード名称 FROM VZコード WHERE VZコード.コード種別ID = '400001' AND VZコード.開始年月日<=? AND (VZコード.終了年月日>=? OR VZコード.終了年月日 IS NULL)) 実施区分情報 ON 実施区分情報.システムコード = A.実施区分即把外连接的条件改成子查询,只用【A.実施区分】做为子查询后的检索条件后,检出的结果就是空
A.事業CD, C.事業名称 AS VZ事業情報_事業名称,
A.実施区分,VZコード.コード名称 実施区分名称, A.実施日,FROM VD実施日 A LEFT JOIN VZ業務情報 B ON A.業務CD = B.業務CD
LEFT JOIN VZ事業情報 C ON C.事業CD = A.事業CD
LEFT JOIN VZコード ON VZコード.コード種別ID = '400001'
AND VZコード.開始年月日<=?
AND (VZコード.終了年月日>=? OR VZコード.終了年月日 IS NULL)
AND VZコード.システムコード = A.実施区分
LEFT JOIN (SELECT VZコード.システムコード,VZコード.コード名称 FROM VZコード WHERE VZコード.コード種別ID = '300051'
AND VZコード.開始年月日<=?
AND (VZコード.終了年月日>=? OR VZコード.終了年月日 IS NULL))
実施場所情報 ON 実施場所情報.システムコード = A.実施場所CD
and A.実施日<='99999999'
and A.実施場所CD=?
ORDER BY A.実施日 desc,A.実施場所CD,A.時間FROM,A.時間TO,A.実施区分,A.業務CD,A.実施種別CD,A.事業CD,A.表示順上面是正确的SQL文,是改正之后的,但是如果第三个left join用下面的形式实行:
LEFT JOIN (SELECT VZコード.システムコード,VZコード.コード名称 FROM VZコード WHERE VZコード.コード種別ID = '400001' AND VZコード.開始年月日<=? AND (VZコード.終了年月日>=? OR VZコード.終了年月日 IS NULL)) 実施区分情報 ON 実施区分情報.システムコード = A.実施区分即把外连接的条件改成子查询,只用【A.実施区分】做为子查询后的检索条件后,检出的结果就是空
解决方案 »
- Oracle10g如何创建数据库和实例
- 存储过程名称为参数,如何使用EXECUTE immediate执行
- 关于oracle数据库的同步问题
- Oracle培训:主要是sql优化方面的,请问杭州附近有哪些培训课程?
- oracle (+) 形式的语句 改为left outer join 怎么改?
- 有没有语句是重新编译存储过程的??
- oracl查询出的数据为什么为空,谁能帮帮我?
- 数据库定期down掉,是什么原因?
- 急!在redhat linux8下安装 oracle9i出现 Error loading native library: libnjni9.so.怎么办呢??
- shared_pool_size过大会对数据库性能产生影响吗?
- 存储过程浮点数值问题
- 数据库连接问题请教
丢你板砖没有别的意思,我不太会用这论坛,不会专门对你的留言回复,所以想引起你注意,才丢的(因为你的观点是错的,实在没办法说是对我有用)实际是这样,这两个SQL语句放在SQLPLUS中跑都是正确的,唯独我说错误的那个,通过JAVA的OJDBC调用,在实际环境中出错。另外,leftjoin中用子查询一点问题也没有啊,别的例子我试过,唯独这个SQL有问题,你可以试试。
SELECT *
FROM VD実施日 A
LEFT JOIN VZ業務情報 B ON A.業務CD = B.業務CD AND 1=2
还是不行,唯一差别是一个是ORACLE10G.2.8 一个是ORALCE10.2.14。导致问题出现,现在已经不用调查了,不过还是希望有人帮忙告诉我为什么,先结贴送分
请不要归结在Oracle上面,如果你能够一开始表述清楚问题,我的回答也就可以很直接了(其实你SQL语句都没有贴完整,From前面居然是逗号。其实那个还是查询本身的区别,第一个SQL语句的外连接的筛选是分开来的,我也说过了,那个筛选对于记录的过滤是无效的,仅让所关联的表记录置空。这样你第一次是关联两次,第二次是合并后关联一次,第一次的两次关联置空情况可能有交叉,而第二次是只要有任意一个条件不满足,都为空,所以你会看到的空列较多。但是这种写法本身不推荐,实际应用中用不着,你为什么会写出这样的查询,我表示质疑。