即使一切都是唯一的,也无法绑定多部分标识符
The multi-part identifier could not be bound even though everything is unique
所以我遇到了 IntelliSense 错误,我不知道为什么。我已将所有内容重命名为使用别名,并且我已经准备好所有关于多部分标识符的内容,这似乎表明它不是唯一的?但是使用别名它似乎是独一无二的,尽管 "MachineID" 在许多表中被引用
这是我的查询
SELECT DISTINCT TOP 1000
a.Name00,
a.UserName00,
a.Domain00,
a.TotalPhysicalMemory00,
a.Manufacturer00,
a.Model00,
a.MachineID,
a.SystemType00,
b.MACAddress00,
b.ServiceName00,
c.System_OU_Name0,
d.Name0,
e.Model00
FROM
[dbo].[Computer_System_DATA] AS a,
[dbo].[v_RA_System_SystemOUName] AS c,
[dbo].[v_GS_PROCESSOR] AS d,
[dbo].[Disk_DATA] AS e
INNER JOIN [dbo].[Network_DATA] AS b ON b.MachineID=a.MachineID
WHERE
b.MACAddress00 IS NOT NULL AND b.ServiceName00 LIKE '%express'
错误显示在第 22 行 a.MachineID
我错过了什么?另外,如果我注释掉以下内容,错误就会消失;
--c.System_OU_Name0,
--d.Name0,
--e.Model00
--[dbo].[v_RA_System_SystemOUName] AS c,
--[dbo].[v_GS_PROCESSOR] AS d,
--[dbo].[Disk_DATA] AS e
非常感谢任何帮助!
Dmitrij Kultasev 恰好解决了这个问题。显式连接首先发生。所以目前,INNER JOIN 在 e
和 b
之间; a
、c
和 d
不在该 ON
子句的范围内 - 因此出现错误(没有 a
)以及为什么它在评论时起作用更改加入顺序(现在意味着您要加入 a
和 b
.
修复您的查询以消除旧的逗号连接语法 - 它来自四分之一个多世纪前!
SELECT DISTINCT TOP 1000
a.Name00,
a.UserName00,
a.Domain00,
a.TotalPhysicalMemory00,
a.Manufacturer00,
a.Model00,
a.MachineID,
a.SystemType00,
b.MACAddress00,
b.ServiceName00,
c.System_OU_Name0,
d.Name0,
e.Model00
FROM
[dbo].[Computer_System_DATA] AS a
INNER JOIN --?--
[dbo].[v_RA_System_SystemOUName] AS c
ON
--?-- What links a and c together?
INNER JOIN --?--
[dbo].[v_GS_PROCESSOR] AS d
ON
--?-- What links d to the combination of a and c?
INNER JOIN --?--
[dbo].[Disk_DATA] AS e
ON
--?-- What links e to the combination of a, c and d?
INNER JOIN [dbo].[Network_DATA] AS b ON b.MachineID=a.MachineID
WHERE
b.MACAddress00 IS NOT NULL AND b.ServiceName00 LIKE '%express'
当然,您可能想要切换执行连接的顺序,例如a
和 c
之间的 link 实际上是通过 d
.
The multi-part identifier could not be bound even though everything is unique
问题标题真的没有意义。显示 "The multi-part identifier could not be bound" 的错误通常意味着您在某处使用的名称的一部分在该位置 根本不可用 - 与多重定义无关。这通常会产生类似 "The correlation name '<x>
' is specified multiple times".
的错误
所以我遇到了 IntelliSense 错误,我不知道为什么。我已将所有内容重命名为使用别名,并且我已经准备好所有关于多部分标识符的内容,这似乎表明它不是唯一的?但是使用别名它似乎是独一无二的,尽管 "MachineID" 在许多表中被引用
这是我的查询
SELECT DISTINCT TOP 1000
a.Name00,
a.UserName00,
a.Domain00,
a.TotalPhysicalMemory00,
a.Manufacturer00,
a.Model00,
a.MachineID,
a.SystemType00,
b.MACAddress00,
b.ServiceName00,
c.System_OU_Name0,
d.Name0,
e.Model00
FROM
[dbo].[Computer_System_DATA] AS a,
[dbo].[v_RA_System_SystemOUName] AS c,
[dbo].[v_GS_PROCESSOR] AS d,
[dbo].[Disk_DATA] AS e
INNER JOIN [dbo].[Network_DATA] AS b ON b.MachineID=a.MachineID
WHERE
b.MACAddress00 IS NOT NULL AND b.ServiceName00 LIKE '%express'
错误显示在第 22 行 a.MachineID
我错过了什么?另外,如果我注释掉以下内容,错误就会消失;
--c.System_OU_Name0,
--d.Name0,
--e.Model00
--[dbo].[v_RA_System_SystemOUName] AS c,
--[dbo].[v_GS_PROCESSOR] AS d,
--[dbo].[Disk_DATA] AS e
非常感谢任何帮助!
Dmitrij Kultasev 恰好解决了这个问题。显式连接首先发生。所以目前,INNER JOIN 在 e
和 b
之间; a
、c
和 d
不在该 ON
子句的范围内 - 因此出现错误(没有 a
)以及为什么它在评论时起作用更改加入顺序(现在意味着您要加入 a
和 b
.
修复您的查询以消除旧的逗号连接语法 - 它来自四分之一个多世纪前!
SELECT DISTINCT TOP 1000
a.Name00,
a.UserName00,
a.Domain00,
a.TotalPhysicalMemory00,
a.Manufacturer00,
a.Model00,
a.MachineID,
a.SystemType00,
b.MACAddress00,
b.ServiceName00,
c.System_OU_Name0,
d.Name0,
e.Model00
FROM
[dbo].[Computer_System_DATA] AS a
INNER JOIN --?--
[dbo].[v_RA_System_SystemOUName] AS c
ON
--?-- What links a and c together?
INNER JOIN --?--
[dbo].[v_GS_PROCESSOR] AS d
ON
--?-- What links d to the combination of a and c?
INNER JOIN --?--
[dbo].[Disk_DATA] AS e
ON
--?-- What links e to the combination of a, c and d?
INNER JOIN [dbo].[Network_DATA] AS b ON b.MachineID=a.MachineID
WHERE
b.MACAddress00 IS NOT NULL AND b.ServiceName00 LIKE '%express'
当然,您可能想要切换执行连接的顺序,例如a
和 c
之间的 link 实际上是通过 d
.
The multi-part identifier could not be bound even though everything is unique
问题标题真的没有意义。显示 "The multi-part identifier could not be bound" 的错误通常意味着您在某处使用的名称的一部分在该位置 根本不可用 - 与多重定义无关。这通常会产生类似 "The correlation name '<x>
' is specified multiple times".