如何用SQL语名使查询结果的字段名称显示为Table.Field
我写了一个动态向CXGRID中增加字段列的小东西,现在出了一个问题,当查询一个表时没有什么问题,当查询两个表时,如果这两个表中有相同字段时,最后导致这两列在CXGRID中显示的值是完全相同的。
所以我想知道,怎么样能用最简单的方法得出以下结果:
有表T
其中字段 a,b,c
怎么用SELECT 语句 查询后其结果显示为
字段名称 T.a T.b T.c
------------------------------------
1 张三 女
2 李四 女
3 王五 男
------解决方案--------------------
declare @sql varchar(1000)
select @sql=isnull(','+@sql,'')+name+' as T.'+name from syscolumns where id=object_id('T')
set @sql='select '+@sql+'from T'
exec(@sql)
------解决方案--------------------
declare @sql varchar(max)
SET @sql=''
select @sql=@sql+CASE WHEN @sql='' THEN '' ELSE ',' end+name+' as [tb.'+name+']' from syscolumns where id=object_id('tb')
set @sql='select '+@sql+' from tb'
exec(@sql)
------解决方案--------------------1. 不知道楼主这样做有什么意义?字段名相同,意义不一样相同,比大多数表都有ID字段,但它们意义不一样,如果作为别的表的外键,它的名字也不能取名为ID。
2. 楼主可能是查询时,如果字段名一样,就要加表名在前(T.ID),做关联查询时,只要字段名不一样,都可以不带表名,如果字段名一样,一定要带表名.
3. 在程序中最好都能够带出字段所属的表名,以免哪天程序加一个字段与关联查询字段名一样而导致错误