免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3643 | 回复: 1
打印 上一主题 下一主题

同样的sql在不同的DB里执行产生的疑问? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-05-06 17:51 |只看该作者 |倒序浏览
有两个INFORMIXSERVER:test1和test2,分别在不同的主机上。
test1版本:IDS11.10FC2

test2版本:IDS9.40FC7


配置ODBC,连接到test2里,执行如下sql,正常执行,无语法错误:
                                        SELECT DISTINCT
                                        J.ZX02,

                                        a.pmm01,
                                        a.pmm02,
                                        a.pmm03,
                                        a.pmm04,
                                        a.pmm05,
                                        h.pmme20 as pmm07,
                                        a.pmm09,
                                        a.pmm13,
                                        a.pmmgrup,
                                        a.pmm21,
                                        a.pmm41,
                                        a.pmm26,
                                        a.pmm10,
                                        a.pmm11,
                                        a.pmm12,
                                        a.pmm17,
                                        a.pmm20,
                                        a.pmm22,
                                        a.pmm40,
                                        a.pmm42,
                                        a.pmm43,
                                        b.gem02,
                                        d.pma02,
                                        e.oah02,
                                        h.pmme04,
                                        h.pmme10,
                                        h.pmme11,
                                        h.pmme12,
                                        g.pmc03,
                                        g.pmc14,
                                        k.gec02,
                                        trim(g.pmc081)||trim(NVL(g.pmc082,' ')) pmc081,
                                        trim(g.pmc091)||trim(NVL(g.pmc092,' '))||trim(NVL(g.pmc093,' ')) pmc091,
                                        trim(NVL(x.pme031,' '))||trim(NVL(x.pme032,' '))||trim(NVL(x.pme033,' '))||trim(NVL(x.pme034,' '))||trim(NVL(x.pme035,' ')) pme031,
                                        trim(NVL(x.pme041,' '))||trim(NVL(x.pme042,' '))  pme041
                                    FROM
                                        xyz@test2:pmm_file a
                                        LEFT JOIN xyz@test2:gem_file b  ON a.pmm13=b.gem01
                                        LEFT JOIN xyz@test2:pma_file d  ON a.pmm20=d.pma01
                                        LEFT JOIN xyz@test2ah_file e  ON a.pmm41=e.oah01
                                        LEFT JOIN xyz@test2:pmme_file h ON a.pmm01=h.pmme01
                                        LEFT JOIN xyz@test2:pmc_file g  ON a.pmm09=g.pmc01
                                        LEFT JOIN xyz@test2:zx_file j   ON a.pmm12=j.zx01
                                        LEFT JOIN xyz@test2:gec_file k  ON a.pmm21=k.gec01
                                        LEFT JOIN xyz@test2:pme_file x  ON a.pmm10=x.pme01
                                    WHERE
                                        a.pmm01 like 'B40133'

但是将同样的sql运行在同样用ODBC连接的test1(test1和test2有信任关系,且权限正确)里面时,报语法错误。

然后将sql换一种写法,sql如下(蓝色表示不同的地方):


SELECT AA.*,J.ZX02
                                       FROM(
                                        SELECT DISTINCT
                                        a.pmm01,
                                        a.pmm02,
                                        a.pmm03,
                                        a.pmm04,
                                        a.pmm05,
                                        h.pmme20 as pmm07,
                                        a.pmm09,
                                        a.pmm13,
                                        a.pmmgrup,
                                        a.pmm21,
                                        a.pmm41,
                                        a.pmm26,
                                        a.pmm10,
                                        a.pmm11,
                                        a.pmm12,
                                        a.pmm17,
                                        a.pmm20,
                                        a.pmm22,
                                        a.pmm40,
                                        a.pmm42,
                                        a.pmm43,
                                        b.gem02,
                                        d.pma02,
                                        e.oah02,
                                        h.pmme04,
                                        h.pmme10,
                                        h.pmme11,
                                        h.pmme12,
                                        g.pmc03,
                                        g.pmc14,
                                        k.gec02,
                                        trim(g.pmc081)||trim(NVL(g.pmc082,' ')) pmc081,
                                        trim(g.pmc091)||trim(NVL(g.pmc092,' '))||trim(NVL(g.pmc093,' ')) pmc091,
                                        trim(NVL(x.pme031,' '))||trim(NVL(x.pme032,' '))||trim(NVL(x.pme033,' '))||trim(NVL(x.pme034,' '))||trim(NVL(x.pme035,' ')) pme031,
                                        trim(NVL(x.pme041,' '))||trim(NVL(x.pme042,' '))  pme041
                                    FROM
                                        xyz@test2:pmm_file a
                                        LEFT JOIN xyz@test2:gem_file b  ON a.pmm13=b.gem01
                                        LEFT JOIN xyz@test2:pma_file d  ON a.pmm20=d.pma01
                                        LEFT JOIN xyz@test2ah_file e  ON a.pmm41=e.oah01
                                        LEFT JOIN xyz@test2:pmme_file h ON a.pmm01=h.pmme01
                                        LEFT JOIN xyz@test2:pmc_file g  ON a.pmm09=g.pmc01
                                        LEFT JOIN xyz@test2:gec_file k  ON a.pmm21=k.gec01
                                        LEFT JOIN xyz@test2:pme_file x  ON a.pmm10=x.pme01
                                    WHERE
                                        a.pmm01 like 'B40133'
                                    ) AA
                                        LEFT JOIN xyz@test2:zx_file j   ON AA.pmm12=j.zx01


以上sql运行在同样用ODBC连接的test1(test1和test2有信任关系,且权限正确)里面时,又是正常的,
运行在用ODBC连接的test2时报语法错误。

比较困惑,按理说都是访问test2上的xyz资料库,应该与test1没有什么关系,难道与数据库版本有关?

论坛徽章:
5
荣誉会员
日期:2011-11-23 16:44:17CU大牛徽章
日期:2013-09-18 15:15:15CU大牛徽章
日期:2013-09-18 15:15:45未羊
日期:2014-02-25 14:37:19射手座
日期:2014-12-26 22:55:37
2 [报告]
发表于 2011-05-06 22:44 |只看该作者
有可能,IDS不同版本的SQL并不是完全向下兼容的。仔细查查手册吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP