Ошибка запроса на обновление SQL Update при обновлении с условиями другой таблицы - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть 3 таблицы со следующей схемой:

  1. назначение (VAT_doctor, date_timestamp, description, VAT_client) VAT_doctor: FK (доктор) VAT_client: FK (клиент)

  2. сотрудник (НДС, имя, дата рождения, улица, город, почтовый индекс, IBAN, зарплата)

  3. врач (НДС, специализация, биография, электронная почта)НДС: ФК (сотрудник)

И я хочу сделать запрос на обновление SQL, который изменяет зарплату всех врачей (врачи являются специализацией сотрудников), у которых было более 1 назначения в 2019 году. Новые зарплаты должны соответствовать увеличению на 5% по сравнению со старыми значениями.

Я уже пробовал это несколькими способами, но всегда возникает ошибка (например, операнд должен содержать 1 столбец (столбцы))


UPDATE employee
SET salary = salary*1.05
where VAT in (
SELECT a.VAT_doctor, COUNT(a.VAT_doctor) AS count, e.VAT, e.salary
FROM appointment a

LEFT JOIN employee e on e.VAT = a.VAT_doctor


WHERE (EXTRACT(year from a.date_timestamp) IN ('2019'))
GROUP BY a.VAT_doctor
HAVING count > 1
);

1 Ответ

1 голос
/ 08 ноября 2019

Если я правильно понимаю, вы можете использовать join в update, чтобы делать то, что вы хотите:

update employee e join
       (select a.vat_doctor
        from appointment a
        where a.date_timestamp >= '2019-01-01' and
              a.date_timestamp < '2020-01-01'
        group by a.vat_doctor
        having count(*) >= 2  -- more than one appointment
       ) a
       on a.vat_doctor = e.vat 
    set salary = salary * 1.05;

Я не думаю, что таблица doctors необходима, если только встречаможет иметь vat_doctor ссылку на не доктора.

...