2017-06-02 76 views
0

我有以下查询哪些工程很好。但是,我需要获取邮件地址的实际状态描述(来自Code_System_State查找表),而不是它的查找代码c.ContactMailingStateUlink。将连接添加到现有查询中的lookkup表中?

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) 

如何正确连接这些表?谢谢。

+0

显示表定义为你想加入的2张桌子。我们还没有足够的信息。 – ganders

+0

连接不是什么给错误。在表Client_Program中的列clientulink不存在 – SAS

+1

AFAIK,你只能引用FROM语句后的一个表,但你使用两个:'从Client_Program cp,Code_System_State css' – ksauter

回答

1

该联接不是什么给错误。 Client_Program表中的列clientulink不存在。

现在在from子句中不推荐使用旧式语法。这是更好的:

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

是的,我应该使用Code_System_State作为下一次连接,而不是再次使用Client表。非常感谢您的帮助! – DataCrypt

0

我从来没有试图加入一个表列标题不匹配 - 这可能是问题。您创建连接的列中的数据应匹配。 例如,如果我加盟,我可以预期将在CP标题被称为宇联表和称为ContactMailingStateUlink 在CSS一列,这样的代码应该阅读

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

我同意标题应该匹配,但这是数据库由供应商设计的方式。但是,它们确实包含相同的查找数据,因此连接是正确的。再次感谢你。 – DataCrypt