多表 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数据库的设置问题吧? 可是我不知道问题在哪? 望赐教!谢谢! 这倒是没见过~~能帖个图出来吗?
一般来说,如果加了别名,则显示的是别名
如:select tab1.col1 f1, tab2.col2 f2 from tab1, tab2 where tab1.id = tab2.id ;
显示的应该就是 f1 f2 http://hiphotos.baidu.com/doufulo/pic/item/39b54917aa6bb402c93d6df1.jpg
[ 本帖最后由 f413537775 于 2007-10-27 08:51 编辑 ]
:em02:
见怪不怪。 终于发现, 原来还是 pb 的问题。首先,用其他软件,通过odbc连接informix数据库,如期返回列别名。证明问题还是在 pb。
考察pb的系统表,没找出问题。
最后想想,或许是用户权限产生的差别。因为,以前就发现不同用户连接,在数据库画笔中使用的sql语句有的是有差别要求的。tab1、tab2是以informix(dba)身份建立的,重新建一用户,只授予connect权限,结果,列别名如期所见。至于个中缘由也懒得再究(informix正在淘汰中), 反正我不用修改原有程序就能使用测试库了。 可能还是表的所有者的问题吧,你的表名称前面加上表的所有者名称试试呢比如:informix.tab_name
页:
[1]