Ví dụ mã mà bạn đã hiển thị có dấu ba chấm và tôi tin rằng chính những gì có trong dấu ba chấm đang gây ra sự cố.
Bạn có:
SELECT R.[ID], C.[name] AS [company], ...
FROM [requests] AS R, ...
LEFT OUTER JOIN [companies] AS C
ON R.[company_id] = S.ID
Giả sử đó là một cái gì đó như:
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
Nói cách khác, sự pha trộn của cú pháp nối trong ANSI 92 trước với cú pháp nối ngoài ANSI 92. Kiểm tra trên SQL Server 2005, có vẻ như bí danh R cho các yêu cầu không được nhìn thấy sau dấu phẩy ngăn cách R với ... trong ví dụ của bạn và [eXample] là X trong ví dụ của bạn. Tuy nhiên, những điều sau đây đã hoạt động:
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
hoặc
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.
hoặc yêu thích của tôi, vì tôi thích cú pháp tham gia ANSI 92:
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