f413537775 发表于 2007-10-26 14:58

多表 sql 语句中指定列别名为何不行

为了测试方便,我在自己的sco os507虚拟机中装了informix 7.30UC2 数据库;正式数据库为Informix Dynamic Server Version 7.31.FC2。

我在 pb中连接测试库中执行以下sql语句时, 列名是: f1, tab2_f2 ,但在正式库中是: f1, f2
select tab1.col1 f1, tab2.col2 f2 from tab1, tab2 where tab1.id = tab2.id ;

连接测试库执行: select tab2.col2 f2 from tab2 时, 列名为: f2

也就是说,在测试库上, 多表查询 sql 语句,返回结果部分列别名前加上了表名, 而单表sql查询语句则列别名正常。

pb的设置没变, informix客户端无异,应该是 informix数据库的设置问题吧? 可是我不知道问题在哪? 望赐教!谢谢!

liaosnet 发表于 2007-10-26 17:17

这倒是没见过~~能帖个图出来吗?
一般来说,如果加了别名,则显示的是别名
如:select tab1.col1 f1, tab2.col2 f2 from tab1, tab2 where tab1.id = tab2.id ;
显示的应该就是 f1 f2

f413537775 发表于 2007-10-27 08:49

http://hiphotos.baidu.com/doufulo/pic/item/39b54917aa6bb402c93d6df1.jpg

[ 本帖最后由 f413537775 于 2007-10-27 08:51 编辑 ]

f413537775 发表于 2007-10-29 14:27

:em02:

见怪不怪。 终于发现, 原来还是 pb 的问题。
首先,用其他软件,通过odbc连接informix数据库,如期返回列别名。证明问题还是在 pb。
考察pb的系统表,没找出问题。
最后想想,或许是用户权限产生的差别。因为,以前就发现不同用户连接,在数据库画笔中使用的sql语句有的是有差别要求的。tab1、tab2是以informix(dba)身份建立的,重新建一用户,只授予connect权限,结果,列别名如期所见。至于个中缘由也懒得再究(informix正在淘汰中), 反正我不用修改原有程序就能使用测试库了。

shanshl 发表于 2007-10-30 16:09

可能还是表的所有者的问题吧,你的表名称前面加上表的所有者名称试试呢比如:informix.tab_name
页: [1]
查看完整版本: 多表 sql 语句中指定列别名为何不行