Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Der mehrteilige Bezeichner konnte auf SQL Server 2008 nicht gebunden werden

Das von Ihnen gezeigte Codebeispiel hatte Auslassungspunkte, und ich glaube, dass die Auslassungspunkte die Probleme verursachen.

Sie haben:

SELECT R.[ID], C.[name] AS [company], ...
FROM [requests] AS R, ...
LEFT OUTER JOIN [companies] AS C
ON R.[company_id] = S.ID

Nehmen wir an, das ist so etwas wie:

SELECT R.[ID], C.[name] AS [company], X.Field
FROM [requests] AS R, [eXample] as X 
LEFT OUTER JOIN [companies] AS C
ON R.[company_id] = S.ID
WHERE X.[request_id] = R.ID

Mit anderen Worten, das Mischen der Inner Join-Syntax vor ANSI 92 mit der Outer Join-Syntax von ANSI 92. Beim Testen auf SQL Server 2005 scheint es, dass der Alias ​​R für Anforderungen nicht hinter dem Komma zu sehen ist, das R von ... in Ihrem Beispiel und [Beispiel] als X in meinem trennt. Folgendes hat jedoch funktioniert:

SELECT R.[ID], C.[name] AS [company], X.Field
FROM [eXample] as X, [requests] AS R 
-- Requests and companies on the same side of the comma
LEFT OUTER JOIN [companies] AS C
ON R.[company_id] = S.ID
WHERE X.[request_id] = R.ID

oder

SELECT R.[ID], C.[name] AS [company], X.Field
FROM [requests] AS R LEFT OUTER JOIN [companies] AS C
    ON R.[company_id] = S.ID, [eXample] as X 
WHERE X.[request_id] = R.ID
-- Yuck, I would hate to find this. Not at all sure from reading
-- the code how it would work.

oder mein Favorit, weil ich die Join-Syntax von ANSI 92 mag:

SELECT R.[ID], C.[name] AS [company], X.Field
FROM [requests] AS R
INNER JOIN [eXample] as X ON X.[request_id] = R.ID
LEFT OUTER JOIN [companies] AS C ON R.[company_id] = S.ID