Я просто изложу это в терминах непрофессионала, так как я полный нуби:
У меня есть 2 таблицы A и B, каждая из которых имеет 2 интересующих столбца: employee_number и salary.
Что я хочу сделать, так это извлечь строки «комбинации» employee_number и salary из A, которых нет в B, но каждый из employee_number и salary должен присутствовать в обоих.
Я ищучтобы выполнить это с 2 следующими условиями (пожалуйста, прости неправильные имена функций .. это просто для того, чтобы «красноречиво» представить проблему):
1.) A.unique (employee_number) существует в B.unique (employee_number) AND A.unique (оклад) существует в B.unique (оклад)
2.) A.concat (employee_number, оклад) <> B.concat (employee_number, оклад)
Примечание: A и B находятся в разных базах данных, поэтому я собираюсь использовать для этого dblink.
Вот что я пытался сделать:
SELECT distinct * FROM dblink('dbname=test1 port=5432
host=test01 user=user password=password','SELECT employee_number,salary, employee_number||salary AS ENS FROM empsal.A')
AS A(employee_number int8, salary integer, ENS numeric)
LEFT JOIN empsalfull.B B on B.employee_number = A.employee_number AND B.salary = A.salary
WHERE A.ENS not in (select distinct employee_number || salary from empsalfull.B)
но оказалось, что это неправильно, поскольку я проверил это с помощью электронных таблицd Я не получаю тот же результат.
Любая помощь будет принята с благодарностью.Спасибо.