Sql-无法绑定多部分标识符

Sql-无法绑定多部分标识符,sql,ident,Sql,Ident,我一直在犯这样的错误 无法绑定多部分标识符page0.PrimaryContact 我检查了语法和拼写,似乎都是正确的 谢谢 您需要进行显式连接。当前您正在使用旧的联接语法。考虑重构: select distinct page0.MatterType, page0.Name, page0.MatterNo, page0.security, page0.serial, page6.TribCaseNo, contact0.Name

我一直在犯这样的错误

无法绑定多部分标识符page0.PrimaryContact

我检查了语法和拼写,似乎都是正确的


谢谢

您需要进行显式连接。当前您正在使用旧的联接语法。考虑重构:

select distinct 
   page0.MatterType, 
   page0.Name, 
   page0.MatterNo, 
   page0.security, 
   page0.serial,      
   page6.TribCaseNo, 
   contact0.Name as Cname
from 
   page0, page6, page14
left join 
   contact0 on page0.PrimaryContact = contact0.linkserial
where 
  page0.serial = page6.CaseSerial 
AND page0.serial = page14.CaseSerial 
AND (page14.staffmember = '100001^24' and page14.status != 'Inactive') 
AND page0.status != 'Closed'

您需要进行显式联接。当前您正在使用旧的联接语法。考虑重构:

select distinct 
   page0.MatterType, 
   page0.Name, 
   page0.MatterNo, 
   page0.security, 
   page0.serial,      
   page6.TribCaseNo, 
   contact0.Name as Cname
from 
   page0, page6, page14
left join 
   contact0 on page0.PrimaryContact = contact0.linkserial
where 
  page0.serial = page6.CaseSerial 
AND page0.serial = page14.CaseSerial 
AND (page14.staffmember = '100001^24' and page14.status != 'Inactive') 
AND page0.status != 'Closed'

您可以通过从更改
中表的顺序来执行查询:

select P0.*, P6.TribCaseNo, C0.Name as Cname
FROM        page0 AS P0
INNER JOIN  page6 AS P6 on P0.serial = P6.CaseSerial 
INNER JOIN  page14 AS P14 ON P0.serial = P14.CaseSerial
LEFT JOIN   contact0 AS C0 on P0.PrimaryContact = C0.linkserial

WHERE (P14.staffmember = '100001^24' AND P14.status != 'Inactive') 
AND   P0.status != 'Closed'
更新

一般来说,我强烈建议您不要将新旧语法混用(就像这里所做的那样),p.campbell的解决方案是编写查询的正确方法

您可以通过从
更改
中表的顺序来进行查询:

select P0.*, P6.TribCaseNo, C0.Name as Cname
FROM        page0 AS P0
INNER JOIN  page6 AS P6 on P0.serial = P6.CaseSerial 
INNER JOIN  page14 AS P14 ON P0.serial = P14.CaseSerial
LEFT JOIN   contact0 AS C0 on P0.PrimaryContact = C0.linkserial

WHERE (P14.staffmember = '100001^24' AND P14.status != 'Inactive') 
AND   P0.status != 'Closed'
更新


一般来说,我强烈建议您不要将新旧语法混用(就像这里所做的那样),p.campbell的解决方案是编写查询的正确方法

page0表中是否存在PrimaryContact列?是否确实存在一列
page0.PrimaryContact
?我想我应该在拼写之前验证一下。第0页上有PrimaryContact列吗?对不起,我应该补充一点,我仔细检查了该列是否存在。关于联接语法的说明。您使用的是隐式和显式语法的组合,这可能会给您带来麻烦。您应该只使用显式联接语法。请参阅本文了解原因:page0表中是否存在PrimaryContact列?是否确实存在一列
page0.PrimaryContact
?我想我应该在拼写之前验证一下。第0页上有PrimaryContact列吗?对不起,我应该补充一点,我仔细检查了该列是否存在。关于联接语法的说明。您使用的是隐式和显式语法的组合,这可能会给您带来麻烦。您应该只使用显式联接语法。请参阅本文了解原因:当我这样做时,我得到了更多关于page0.name、page0.matterno、page0.security、page0.serial、page6.tribcaseno和contact0.name字段的“无法绑定多部分标识符”。@Terri那么您的表/视图实际上并不包含这些列。编辑您的问题,以包含所有这些表的创建脚本,或者可能包含这些表及其所有列名的屏幕截图。SQL Server会告诉您,它们并没有这样做。可能会更改此更新的选择列表。编辑了我的答案。有没有办法添加屏幕截图?知道为什么SQL Server会认为它们不存在吗?Page0创建表[dbo]。[Page0]([SERIAL][int]不为NULL,[TYPELAW][int]NULL,[SECURITY][int]NULL,[Status][varchar](10)NULL,[LINKSERIAL][varchar](21)NULL,[division][varchar 40)NULL,[MatterType][varchar 40)NULL,[Name][varchar 500)NULL,[DateClosed][datetime]NULL,[MatterNo][varchar](16)NULL,[PrimaryContact][varchar](21)NULL,[DEFLD][datetime]NULL,[abfld][varchar](40)NULL,[lafld][datetime]NULL,[OpenBy][varchar](20)NULL,[TEXT2][varchar](20)NULL,CONSTRAINT[PK_upage0_u6b24; ea82]主键集群当我这样做时,我得到更多“无法绑定多部分标识符”对于字段page0.name、page0.matterno、page0.security、page0.serial、page6.tribcaseno和contact0.name。@Terri,那么您的表/视图实际上并不包含这些列。请编辑您的问题,以包含所有这些表的创建脚本,或者可能是这些表及其所有列名的屏幕截图。SQL Server告诉您,它们不包含这些列如前所述,不存在。可能更改为此更新的选择列表。编辑了我的答案。是否有方法添加屏幕截图?知道SQL Server为什么会认为它们不存在吗?Page0创建表[dbo]。[Page0]([SERIAL][int]NOT NULL,[TYPELAW][int]NULL,[SECURITY][int]NULL,[Status][varchar 10)NULL,[LINKSERIAL][varchar 21)NULL,[division][varchar](40)NULL[MatterType][varchar](40)NULL[Name][varchar](500)NULL[DateClosed][datetime]NULL[MatterNo][varchar](16)NULL[PrimaryContact][varchar](21)NULL[DEFLD][datetime]NULL[abfld][varchar datetime](40)NULL[lafld][datetime]NULL[OpenBy][varchar 20)NULL[TEXT2 varchar 20)NULL,约束[PK_upage0_uu6b24ea82]主键CLUSTEREDPerfect。这很有效。我实际上不知道这是新旧语法。有趣。完美。这很有效。我实际上不知道这是新旧语法。有趣。