Pokazany przez Ciebie przykład kodu miał elipsy i wierzę, że to właśnie one powodują problemy.
Masz:
SELECT R.[ID], C.[name] AS [company], ...
FROM [requests] AS R, ...
LEFT OUTER JOIN [companies] AS C
ON R.[company_id] = S.ID
Powiedzmy, że jest to coś takiego:
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
Innymi słowy, mieszanie składni sprzężenia wewnętrznego sprzed ANSI 92 ze składnią sprzężenia zewnętrznego ANSI 92. Testując na SQL Server 2005, okazuje się, że alias R dla żądań nie jest widoczny po przecinku oddzielającym R od ... w twoim przykładzie, a [przykład] jako X w moim przykładzie. Działały jednak następujące:
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
lub
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.
lub mój ulubiony, ponieważ lubię składnię złączenia 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