Есть две проблемы, которые вы еще не обнаружили.
- в Access или в его движке базы данных нет функции CONCAT ()
- ваш запрос пытается использовать phone_type, нофактическое имя поля: f_phone_type
При объединении более двух таблиц ядру базы данных Access требуются скобки.Проще всего сделать это правильно, используя конструктор запросов для настройки объединений.Также разработчик запросов заменит LEFT JOIN на LEFT OUTER JOIN;В Access 2003 у меня работает любой из этих способов.
Этот способ легко встроить в конструктор запросов, но он возвращает строки только для клиентов, у которых есть домашний и рабочий номера.Я использовал его в качестве отправной точки, а затем скорректировал предложения ON, аналогичные исходным.
SELECT
c.f_first_name & " " & c.f_last_name AS [Name],
wp.f_phone_number AS [Work Number],
hp.f_phone_number AS [Home Number]
FROM
(Clients AS c
LEFT JOIN Phones AS hp
ON c.f_id = hp.f_client_id)
LEFT JOIN Phones AS wp
ON c.f_id = wp.f_client_id
WHERE
hp.f_phone_type='Home'
AND wp.f_phone_type='Work';
Перемещение этих условий WHERE в выражения ON, как в примере с SQL Server, возвратит всех клиентов независимо от того,у вас нет телефонных номеров в файле для них.Однако такой подход потребует скобок вокруг выражений ON.И эти СОЕДИНЕНИЯ не могут отображаться в конструкторе запросов.
SELECT
c.f_first_name & " " & c.f_last_name AS [Name],
wp.f_phone_number AS [Work Number],
hp.f_phone_number AS [Home Number]
FROM
(Clients AS c
LEFT JOIN Phones AS hp
ON (c.f_id = hp.f_client_id AND hp.f_phone_type='Home'))
LEFT JOIN Phones AS wp
ON (c.f_id = wp.f_client_id AND wp.f_phone_type='Work');
Обновление : Для себя я бы предпочел сделать это с подзапросами.
SELECT
c.f_first_name & " " & c.f_last_name AS [Name],
wp.f_phone_number AS [Work Number],
hp.f_phone_number AS [Home Number]
FROM
(Clients AS c
LEFT JOIN [
SELECT f_client_id, f_phone_number
FROM Phones
WHERE f_phone_type='Home'
]. AS hp
ON c.f_id = hp.f_client_id)
LEFT JOIN [
SELECT f_client_id, f_phone_number
FROM Phones
WHERE f_phone_type='Work'
]. AS wp
ON c.f_id = wp.f_client_id;