关于oracle多表联合查询的问题

pangxinfu 2006-09-12 10:54:21
SQL SERVER2000中的多表联合查询程序如下:
SELECT * FROM
(SELECT pp.HTNO, pcd.NAME AS LD1 FROM PUBLiC_PLAN pp JOiN PUBLiC_CODE_DEViCE pcd ON pp.LD_1_iD=pcd.DEViCE_iD WHERE pp.PLAN_STYLE<>-1 ) AS A
LEFT JOiN
(SELECT pp.HTNO, pcd.NAME AS LD2 FROM PUBLiC_PLAN pp JOiN PUBLiC_CODE_DEViCE pcd ON pp.LD_2_iD=pcd.DEViCE_iD) AS B ON A.HTNO = B.HTNO
LEFT JOiN
(SELECT pp.HTNO,pp.PONO ,pp.SG,pp.D_DECiSiON_SG FROM PUBLiC_PLAN pp) AS C ON A.HTNO = C.HTNO
LEFT JOiN (SELECT pp.HTNO, pcd.NAME AS CAST1,pp.D_TiME_SUBTRACT FROM PUBLiC_PLAN pp JOiN PUBLiC_CODE_DEViCE pcd ON pp.CAST_1_iD = pcd.DEViCE_iD) AS D ON A.HTNO = D.HTNO
ORDER BY SUBSTRING(CAST(A.HTNO AS CHAR(6)),2,5)

在oracle10g中怎么实现上述程序的多表查询
...全文
957 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
pangxinfu 2006-09-14
  • 打赏
  • 举报
回复
上面CQ中的复合联合检索在oracle10g是不能执行的,已经把SUBSTRING改为substr()了!而且,我的联合查询比上面写的还要复杂,我为了节省空间有很多还没写!
Eric_1999 2006-09-13
  • 打赏
  • 举报
回复
LEFT JOIN,在9i以前的就不行。
在10g上可以用这样的。


ORDER BY SUBSTRING(CAST(A.HTNO AS CHAR(6)),2,5)
改成
ORDER BY SUBSTR(CAST(A.HTNO AS CHAR(6)),2,5)
就可以了。
Eric_1999 2006-09-13
  • 打赏
  • 举报
回复
在10g上可以用这样的。LEFT JOIN,但9i以前的就不行。

ORDER BY SUBSTRING(CAST(A.HTNO AS CHAR(6)),2,5)
改成
ORDER BY SUBSTR(CAST(A.HTNO AS CHAR(6)),2,5)
就可以了。
wiler 2006-09-12
  • 打赏
  • 举报
回复
在oracle10g中这样的语句是可以执行的
问题子查询太多,可能性能不好

17,090

社区成员

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

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