在现有查询中将连接添加到lookkup表?

时间:2017-06-02 14:35:33

标签: sql tsql

我有以下查询,效果很好。但是,我需要获取邮件地址的实际状态描述(来自Code_System_State查找表),而不是其查找代码c.ContactMailingStateUlink。

    SELECT
   c.ClientID
  , cp.ClientULink
  , cp.ProgramULink
  , c.FirstName
  , c.LastName
  , c.ContactMailingAddress1
  , c.ContactMailingAddress2
  , c.ContactMailingCity
  , c.ContactMailingStateULink
  , c.ContactMailingZip
  , c.ContactEmail
  , c.ContactHomePhone
  , c.ContactCellularPhone
  , StartDate 
  , EndDate
  , cp.ProgramStatusULink  
from Client_Program cp
INNER JOIN client c ON c.ulink = cp.clientulink
where  convert(char(10),cp.StartDate,120) = '2016-02-01'
  and convert(char(10),cp.EndDate,120) = convert(CHAR(10),DateAdd(yyyy, 1, cp.StartDate)-1,120)

我尝试按如下方式修改我的查询,但收到错误:

“无法绑定多部分标识符”cp.clientulink“。

SELECT
   c.ClientID
  , cp.ClientULink
  , cp.ProgramULink
  , c.FirstName
  , c.LastName
  , c.ContactMailingAddress1
  , c.ContactMailingAddress2
  , c.ContactMailingCity
  , c.ContactMailingStateULink
  , css.Description
  , c.ContactMailingZip
  , c.ContactEmail
  , c.ContactHomePhone
  , c.ContactCellularPhone
  , StartDate 
  , EndDate
  , cp.ProgramStatusULink  
from Client_Program cp, Code_System_State css
INNER JOIN client c ON c.ulink = cp.clientulink
INNER JOIN client ON c.ContactMailingStateUlink = css.code 
where  convert(char(10),cp.StartDate,120) = '2016-02-01'
  and convert(char(10),cp.EndDate,120) = convert(CHAR(10),DateAdd(yyyy, 1, cp.StartDate)-1,120)

如何正确加入这些表格?谢谢。

2 个答案:

答案 0 :(得分:1)

联接不是给出错误的原因。表Client_Program中的列clientulink不存在。

现在,from-clause中不推荐使用它的旧式语法。这样更好:

 from Client_Program cp
 inner join Code_System_State css
  ON cp.___KEY___ = css.__KEY___

答案 1 :(得分:0)

我从未尝试过加入列标题不匹配的表格 - 这可能是问题所在。您创建联接的列中的数据应匹配。 例如,如果我加入表格,我可以预期CP中的标题会被称为 ulink ,而CSS中的列名为 ContactMailingStateUlink 所以代码应该是

From Client Programme
on c.ulink=CP.ulink 
Inner Join CSS
on c.ContactMailingStateUlink = css_code.ContactMailingStateUlink