积极答复者
因为不同的表含有相同的列名,就出错了

问题
-
我的PropertyTable和ContractTable有相同的列 address,于是下面的sql语句执行时出现了如图所示的提示,下面是我的代码,该怎么修改呢?
--------------------------------代码--------------------------------
select * from (select * from ReceivableTable ) as Tab2 join (select * from PropertyTable b join ContractTable a on a.ContractID=b.PropertyID where b.PropertyState=1 and a.PerformState='正在履行' and a.ContractType='租赁' and a.ContractNumber not like '%new%') as Tab1 on Tab1.City+Tab1.Road+ Tab1.Address=Tab2.PropertyCRAR
-------------------------------图1------------------------------------
C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!
答案
-
在select 的时候加上要哪个表的哪个字段
例如:
select a.a字段 ,b.b字段 from a表 as a
inner join
b表 as b
on a.id=b.id
这样才不会容易出错
- 已标记为答案 linjiangxian11 2014年1月20日 8:02
全部回复
-
首先SELECT * 不是好的做法,你是要查询所有的数据?如果不是所有数据的话,指定列名称选择你要查询的Address。两个Address是否一样呢?如果一样选择一个就好了,如果不一样可以用AS 指定Address1,Address2。
另外提一下你Tab中出现了两个Address字段,SQL Server就无法知道你要试用哪个Address做Join。
Please Mark As Answer if it is helpful.
- 已编辑 KevinLiu328 2014年1月14日 12:56
-
select * from
(select *
from ReceivableTable ) as Tab2 join
(select a.*, b.*
from PropertyTable b join ContractTable a
on a.ContractID=b.PropertyID
where b.PropertyState=1
and a.PerformState='正在履行'
and a.ContractType='租赁'
and a.ContractNumber not like '%new%') as Tab1
on Tab1.City+Tab1.Road+ Tab1.Address=Tab2.PropertyCRAR最简单的改法就是粗体标识的那样(select * 改成 select a.*, b.*)。
顺便说一下,如果在表PropertyTable和ContractType中只需要少数列的话,
最好指定列名,例如这里的a.Address和b.Address。
- 已建议为答案 Steven.桦仔 2014年1月14日 14:44
-
在select 的时候加上要哪个表的哪个字段
例如:
select a.a字段 ,b.b字段 from a表 as a
inner join
b表 as b
on a.id=b.id
这样才不会容易出错
- 已标记为答案 linjiangxian11 2014年1月20日 8:02