Не удалось связать идентификатор из нескольких частей, хотя все уникально - PullRequest
0 голосов
/ 06 июля 2018

Итак, я получаю ошибку 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

Любая помощь очень ценится!

1 Ответ

0 голосов
/ 06 июля 2018

Дмитрий Култасев был на месте для выпуска. Явные объединения происходят первыми. Так что на данный момент ВНУТРЕННЕЕ СОЕДИНЕНИЕ находится между 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 на самом деле через d.


Не удалось связать идентификатор из нескольких частей, хотя все уникально

Название вопроса не имеет смысла. Ошибка, указывающая на то, что «идентификатор из нескольких частей не может быть привязан», обычно означает, что часть имени, которое вы использовали где-то, недоступна вообще в этом месте - не имеет ничего общего с несколькими определениями. Обычно это приводит к ошибке в строке «Имя корреляции« <x> »указывается несколько раз».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...