SQL Server 2005 Не удалось связать многоэлементный идентификатор «x» - PullRequest
3 голосов
/ 23 января 2012

Я думаю, что у меня проблема с синтаксисом, но я изо всех сил пытаюсь найти ответ ...

Может кто-нибудь объяснить, почему

SELECT TOP 3 * FROM Facilities 
        INNER JOIN FacilityStates 
        ON FacilityStates.Asset = Facilities.ID
        WHERE Facilities.ID = 'MyFacility'

компилирует и возвращает подходящий результат, но я думаю, что это полностью квалифицированная версия

SELECT TOP 3 * FROM [dbo].[Facilities] 
               INNER JOIN [dbo].[FacilityStates]
               ON [dbo].[FacilityStates.Asset] = [dbo].[Facilities.ID]
               WHERE [dbo].[Facilities.ID] = 'MyFacility'

выдает "Не удалось связать идентификатор из нескольких частей" x ". для левой и правой частей предложения on и предложения where?

Ответы [ 3 ]

3 голосов
/ 23 января 2012

Поскольку вы объединяете Table.Column в один набор квадратных скобок:

....
ON [dbo].[FacilityStates.Asset] = [dbo].[Facilities.ID] 
....

Это должно быть:

....
ON [dbo].[FacilityStates].[Asset] = [dbo].[Facilities].[ID] 
....

Квадратные скобки в SQL Server используются для явного обозначенияимя объекта, которое может содержать пробелы или быть зарезервированным словом.Поэтому, когда вы объединили FacilityStates.Asset в один набор скобок, вы говорили SQL Server, что существует объект с таким именем.Которого там нет.

1 голос
/ 23 января 2012

Попытайтесь выяснить, что все в квадратных скобках - это одно имя. Вы заключили в квадратные скобки таблицу и имена полей вместе. Допустимый запрос:

SELECT TOP 3 * 
FROM [dbo].[Facilities] 
INNER JOIN [dbo].[FacilityStates]
  ON [dbo].[FacilityStates].[Asset] = [dbo].[Facilities].[ID]
WHERE [dbo].[Facilities].[ID] = 'MyFacility'
1 голос
/ 23 января 2012

Это ваши квадратные скобки:

SELECT TOP 3 * FROM [dbo].[Facilities]  
               INNER JOIN [dbo].[FacilityStates] 
               ON [dbo].[FacilityStates].[Asset] = [dbo].[Facilities].[ID] 
               WHERE [dbo].[Facilities].[ID] = 'MyFacility' 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...