Вам нужно полное внешнее соединение. Для каждого значения Account
, фигурирующего в любой таблице, это даст соответствующие значения Ct
для каждой таблицы, если заданное значение Account
появится, а в противном случае - ноль.
select Account,Ph.Ct as ph_ct,Rx.Ct as rx_ct
from Ph full outer join Rx on (Ph.Account=Rx.Account);
Редактировать: Поскольку Access, по-видимому, не поддерживает полные внешние соединения (по какой-то ужасной причине), вы можете добиться того же эффекта с объединением левого объединения с правым объединением:
select Ph.Account, Ph.Ct as ph_ct, Rx.Ct as rx_ct
from Ph left join Rx on (Ph.Account=Rx.Account)
union
select Rx.Account, Ph.Ct as ph_ct,Rx. Ct as rx_ct
from Ph right join Rx on (Ph.Account=Rx.Account);
, что также эквивалентно (вероятно, быстрее):
select Ph.Account, Ph.Ct as ph_ct, Rx.Ct as rx_ct
from Ph left join Rx on (Ph.Account=Rx.Account)
where (Rx.Account IS NULL)
union all
select Rx.Account, Ph.Ct as ph_ct, Rx.Ct as rx_ct
from Ph right join Rx on (Ph.Account=Rx.Account);