Я удивлен, что он выполняет этот запрос вообще. Вы указываете таблицу «контакты» дважды.
Ваше LEFT JOIN должно возвращать каждую строку от "companies". Поскольку вы не извлекаете какие-либо столбцы из контактов, я уверен, что ваш запрос эквивалентен
SELECT *
FROM companies
до тех пор, пока "компании" означает то, что он делает на обычном языке.
Если это не так, вы можете перенести нагрузку на SQL Server, либо создав представление в SQL Server, либо создав сквозной запрос в Access. Сквозной запрос должен быть написан на диалекте SQL вашего сервера (SQL Server 2008, диалект SQL).
Ваша редакция, воспроизведенная ниже, ничего не меняет в моих предыдущих комментариях.
select DISTINCTROW companies.*
from companies, contacts, companies
left join contacts on contacts.com_uid = companies.com_uid
(This is the ms-access form of a standard "left-join")
Это , а не Форма доступа для левого соединения. Доступ не позволит этого:
from companies, contacts, companies
left join contacts
, потому что теперь вы указываете обе таблицы дважды.
Исходя из ваших правок, я бы сказал, что запрос, который вы пытаетесь написать, по-прежнему эквивалентен
SELECT *
FROM companies
Что вы получите, если запустите , что ?