SQL问题-无法绑定多部分标识符
我正在努力解决一些可能很简单的问题。这是通过链接服务器实现的。我已经浏览了这个论坛,寻找线索,但我仍然摸不着头脑。我对这方面还不太熟悉,所以请原谅我愚蠢的错误。提前感谢您提供的任何清晰信息 亚伦 运行此查询时,我没有任何问题SQL问题-无法绑定多部分标识符,sql,sql-server,Sql,Sql Server,我正在努力解决一些可能很简单的问题。这是通过链接服务器实现的。我已经浏览了这个论坛,寻找线索,但我仍然摸不着头脑。我对这方面还不太熟悉,所以请原谅我愚蠢的错误。提前感谢您提供的任何清晰信息 亚伦 运行此查询时,我没有任何问题 select i.guid from [DBS1].[AltDB].dbo.Item AS i 当我运行下面的查询时,我得到了错误。我不明白第一个查询如何处理I.guid,而第二个查询则没有 Msg 4104,16级,状态1,第18行 无法绑定多部分标识符“i.guid
select i.guid
from [DBS1].[AltDB].dbo.Item AS i
当我运行下面的查询时,我得到了错误。我不明白第一个查询如何处理I.guid
,而第二个查询则没有
Msg 4104,16级,状态1,第18行无法绑定多部分标识符“i.guid” 查询:
SELECT TOP (100) PERCENT
rrc.Name AS CompName, 'Altiris' AS Source,
CASE
WHEN i.ProductUninstalled = 1 THEN 'Uninstall '
ELSE ''
END +
CASE
WHEN i.Name = i.Name THEN i.Name
ELSE ' - ' + i.Name
END AS Summary,
eti.ExecutedBy,
CASE eti.InstanceStatus
WHEN 3 THEN 'Failure'
WHEN 0 THEN 'Not Started'
WHEN 2 THEN 'Success'
WHEN 4 THEN 'Cancelled'
WHEN 1 THEN 'In Progress'
ELSE 'Not Reported'
END AS Status,
eti.StartTime,
eti.EndTime, i.Description AS Detail
FROM
[DBS1].[AltDB].dbo.Item AS i
INNER JOIN
[DBS1].[AltDB].dbo.ItemVersions AS iv
INNER JOIN
[DBS1].[AltDB].dbo.ItemVersionData AS ivd ON iv.VersionGuid = ivd.VersionGuid ON i.guid = iv.ItemGuid
INNER JOIN
[DBS1].[AltDB].dbo.TaskInstances AS ti ON ivd.VersionGuid = ti.TaskVersionGuid
INNER JOIN
[DBS1].[AltDB].dbo.Evt_Task_Instances AS eti ON ti.ResourceGuid = eti._ResourceGuid AND ti.TaskInstanceGuid = eti.TaskInstanceGuid
INNER JOIN
[DBS1].[AltDB].dbo.RM_ResourceComputer AS rrc ON eti._ResourceGuid = rrc.Guid
INNER JOIN
[DBS1].[AltDB].dbo.TaskInstances AS ti2 ON eti.ParentTaskInstanceGuid = ti2.TaskInstanceGuid
INNER JOIN
[DBS1].[AltDB].dbo.ItemVersions AS iv2
INNER JOIN
[DBS1].[AltDB].dbo.Item ON iv2.ItemGuid = i.guid ON TaskInstances_1.TaskVersionGuid = iv2.VersionGuid
WHERE
(i.Attributes = 0)
ORDER BY
eti.StartTime DESC, eti.EndTime DESC
可能您想使用
和:
[DBS1].[AltDB].dbo.ItemVersionData AS ivd ON iv.VersionGuid = ivd.VersionGuid AND i.guid = iv.ItemGuid INNER JOIN
而不是在
上双击:
[DBS1].[AltDB].dbo.ItemVersionData AS ivd ON iv.VersionGuid = ivd.VersionGuid ON i.guid = iv.ItemGuid INNER JOIN
这里也一样:
[DBS1].[AltDB].dbo.Item ON iv2.ItemGuid = i.guid ON
TaskInstances_1.TaskVersionGuid = iv2.VersionGuid
编辑:
你错过了关于
子句的,不管怎样,你的代码太难读了
全部:
可能您想使用和:
[DBS1].[AltDB].dbo.ItemVersionData AS ivd ON iv.VersionGuid = ivd.VersionGuid AND i.guid = iv.ItemGuid INNER JOIN
而不是在
上双击:
[DBS1].[AltDB].dbo.ItemVersionData AS ivd ON iv.VersionGuid = ivd.VersionGuid ON i.guid = iv.ItemGuid INNER JOIN
这里也一样:
[DBS1].[AltDB].dbo.Item ON iv2.ItemGuid = i.guid ON
TaskInstances_1.TaskVersionGuid = iv2.VersionGuid
编辑:
你错过了关于
子句的,不管怎样,你的代码太难读了
全部:
可能您想使用和:
[DBS1].[AltDB].dbo.ItemVersionData AS ivd ON iv.VersionGuid = ivd.VersionGuid AND i.guid = iv.ItemGuid INNER JOIN
而不是在
上双击:
[DBS1].[AltDB].dbo.ItemVersionData AS ivd ON iv.VersionGuid = ivd.VersionGuid ON i.guid = iv.ItemGuid INNER JOIN
这里也一样:
[DBS1].[AltDB].dbo.Item ON iv2.ItemGuid = i.guid ON
TaskInstances_1.TaskVersionGuid = iv2.VersionGuid
编辑:
你错过了关于
子句的,不管怎样,你的代码太难读了
全部:
可能您想使用和:
[DBS1].[AltDB].dbo.ItemVersionData AS ivd ON iv.VersionGuid = ivd.VersionGuid AND i.guid = iv.ItemGuid INNER JOIN
而不是在
上双击:
[DBS1].[AltDB].dbo.ItemVersionData AS ivd ON iv.VersionGuid = ivd.VersionGuid ON i.guid = iv.ItemGuid INNER JOIN
这里也一样:
[DBS1].[AltDB].dbo.Item ON iv2.ItemGuid = i.guid ON
TaskInstances_1.TaskVersionGuid = iv2.VersionGuid
编辑:
你错过了关于
子句的,不管怎样,你的代码太难读了
全部:
您可能希望像这样启动from
子句:
FROM [DBS1].[AltDB].dbo.Item i INNER JOIN
[DBS1].[AltDB].dbo.ItemVersions iv
ON i.guid = iv.ItemGuid INNER JOIN
[DBS1].[AltDB].dbo.ItemVersionData ivd
ON iv.VersionGuid = ivd.VersionGuid INNER JOIN
. . .
您的结构是允许的,但最终与此等效:
FROM [DBS1].[AltDB].dbo.Item AS i INNER JOIN
([DBS1].[AltDB].dbo.ItemVersions AS iv INNER JOIN
[DBS1].[AltDB].dbo.ItemVersionData AS ivd
ON iv.VersionGuid = ivd.VersionGuid
)
ON i.guid = iv.ItemGuid INNER JOIN
嗯,这不能解释问题。因为这应该正确解析。但是在后面的FROM
子句中,您会做同样的事情:
. . .
eti.ParentTaskInstanceGuid = ti2.TaskInstanceGuid INNER JOIN
([DBS1].[AltDB].dbo.ItemVersions AS iv2 INNER JOIN
[DBS1].[AltDB].dbo.Item
ON iv2.ItemGuid = i.guid
)
ON TaskInstances_1.TaskVersionGuid = iv2.VersionGuid
我想这就是你的问题所在。更糟糕的是,您对项目的引用在加入中没有使用。您可能打算在那里的某个地方安装一个i2
使用连接时,几乎不需要括号。并且所有联接的旁边都应该有一个on
子句。大概,您希望像下面这样启动from
子句:
FROM [DBS1].[AltDB].dbo.Item i INNER JOIN
[DBS1].[AltDB].dbo.ItemVersions iv
ON i.guid = iv.ItemGuid INNER JOIN
[DBS1].[AltDB].dbo.ItemVersionData ivd
ON iv.VersionGuid = ivd.VersionGuid INNER JOIN
. . .
您的结构是允许的,但最终与此等效:
FROM [DBS1].[AltDB].dbo.Item AS i INNER JOIN
([DBS1].[AltDB].dbo.ItemVersions AS iv INNER JOIN
[DBS1].[AltDB].dbo.ItemVersionData AS ivd
ON iv.VersionGuid = ivd.VersionGuid
)
ON i.guid = iv.ItemGuid INNER JOIN
嗯,这不能解释问题。因为这应该正确解析。但是在后面的FROM
子句中,您会做同样的事情:
. . .
eti.ParentTaskInstanceGuid = ti2.TaskInstanceGuid INNER JOIN
([DBS1].[AltDB].dbo.ItemVersions AS iv2 INNER JOIN
[DBS1].[AltDB].dbo.Item
ON iv2.ItemGuid = i.guid
)
ON TaskInstances_1.TaskVersionGuid = iv2.VersionGuid
我想这就是你的问题所在。更糟糕的是,您对项目的引用在加入中没有使用。您可能打算在那里的某个地方安装一个i2
使用连接时,几乎不需要括号。并且所有联接的旁边都应该有一个on
子句。大概,您希望像下面这样启动from
子句:
FROM [DBS1].[AltDB].dbo.Item i INNER JOIN
[DBS1].[AltDB].dbo.ItemVersions iv
ON i.guid = iv.ItemGuid INNER JOIN
[DBS1].[AltDB].dbo.ItemVersionData ivd
ON iv.VersionGuid = ivd.VersionGuid INNER JOIN
. . .
您的结构是允许的,但最终与此等效:
FROM [DBS1].[AltDB].dbo.Item AS i INNER JOIN
([DBS1].[AltDB].dbo.ItemVersions AS iv INNER JOIN
[DBS1].[AltDB].dbo.ItemVersionData AS ivd
ON iv.VersionGuid = ivd.VersionGuid
)
ON i.guid = iv.ItemGuid INNER JOIN
嗯,这不能解释问题。因为这应该正确解析。但是在后面的FROM
子句中,您会做同样的事情:
. . .
eti.ParentTaskInstanceGuid = ti2.TaskInstanceGuid INNER JOIN
([DBS1].[AltDB].dbo.ItemVersions AS iv2 INNER JOIN
[DBS1].[AltDB].dbo.Item
ON iv2.ItemGuid = i.guid
)
ON TaskInstances_1.TaskVersionGuid = iv2.VersionGuid
我想这就是你的问题所在。更糟糕的是,您对项目的引用在加入中没有使用。您可能打算在那里的某个地方安装一个i2
使用连接时,几乎不需要括号。并且所有联接的旁边都应该有一个on
子句。大概,您希望像下面这样启动from
子句:
FROM [DBS1].[AltDB].dbo.Item i INNER JOIN
[DBS1].[AltDB].dbo.ItemVersions iv
ON i.guid = iv.ItemGuid INNER JOIN
[DBS1].[AltDB].dbo.ItemVersionData ivd
ON iv.VersionGuid = ivd.VersionGuid INNER JOIN
. . .
您的结构是允许的,但最终与此等效:
FROM [DBS1].[AltDB].dbo.Item AS i INNER JOIN
([DBS1].[AltDB].dbo.ItemVersions AS iv INNER JOIN
[DBS1].[AltDB].dbo.ItemVersionData AS ivd
ON iv.VersionGuid = ivd.VersionGuid
)
ON i.guid = iv.ItemGuid INNER JOIN
嗯,这不能解释问题。因为这应该正确解析。但是在后面的FROM
子句中,您会做同样的事情:
. . .
eti.ParentTaskInstanceGuid = ti2.TaskInstanceGuid INNER JOIN
([DBS1].[AltDB].dbo.ItemVersions AS iv2 INNER JOIN
[DBS1].[AltDB].dbo.Item
ON iv2.ItemGuid = i.guid
)
ON TaskInstances_1.TaskVersionGuid = iv2.VersionGuid
我想这就是你的问题所在。更糟糕的是,您对项目的引用在加入中没有使用。您可能打算在那里的某个地方安装一个i2
使用连接时,几乎不需要括号。所有联接旁边都应该有一个on
子句。我认为这不能解决问题。@GordonLinoff查看完整查询缺少on子句。它们不是“错过”的。看看我的答案。@GordonLinoff也许你是对的,但这段代码很混乱。如果您修复了对项的最终引用,我认为您的查询将是正确的。我认为这不会解决问题。@GordonLinoff查看完整查询缺少ON子句。它们不是“错过”的。看看我的答案。@GordonLinoff也许你是对的,但这段代码很混乱。如果您修复了对项的最终引用,我认为您的查询将是正确的。我认为这不会解决问题。@GordonLinoff查看完整查询缺少ON子句。它们不是“错过”的。看看我的答案。@GordonLinoff也许你是对的,但这段代码很混乱。如果您修复了对项的最终引用,我认为您的查询将是正确的。我认为这不会解决问题。@GordonLinoff查看完整查询缺少ON子句。它们不是“错过”的。看看我的答案。@GordonLinoff也许你是对的,但这段代码很混乱。如果您将最后一个引用修改为项
,我认为您的查询将是正确的。谢谢。我发布的问题已经解决,并将解决另一个问题。谢谢你们。我发布的问题已经解决,并将解决另一个问题。谢谢你们。我发布的问题已经解决,并将解决另一个问题。谢谢你们。我所发布的问题已经解决,并将解决另一个问题。