Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL问题-无法绑定多部分标识符_Sql_Sql Server - Fatal编程技术网

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也许你是对的,但这段代码很混乱。如果您将最后一个引用修改为
,我认为您的查询将是正确的。谢谢。我发布的问题已经解决,并将解决另一个问题。谢谢你们。我发布的问题已经解决,并将解决另一个问题。谢谢你们。我发布的问题已经解决,并将解决另一个问题。谢谢你们。我所发布的问题已经解决,并将解决另一个问题。