Добавление столбца и добавление данных COUNT - PullRequest
0 голосов
/ 09 июня 2019

Я должен взять счетчик из столбца одной таблицы и создать новый столбец в другой таблице со счетчиком.

Добавьте в реляционную таблицу DAY CARE CENTER информацию об общем количестве зачислений, обработанных каждым детским садом. Обратите внимание, что если в дневном центре не зарегистрировано, то для такого дневного центра общее число зачислений должно быть установлено равным нулю. Примените соответствующие ограничения согласованности для реляционной таблицы DAY CARE CENTER.

Я не получаю никакого кода для этого вообще. Я пробовал несколько вариантов, но ничего не работает. Количество заявок, которые я получаю из другой таблицы с именем DAY_CARE_ENROLMENT.

Я новичок в SQL, поэтому, пожалуйста, извините за мои глупые ошибки. Может кто-нибудь помочь?

ALTER TABLE DAY_CARE_CENTER  
ADD totalEnrol INTEGER(1) DEFAULT '0';

UPDATE DAY_CARE_CENTER
SET totalEnrol = COUNT(enrolStartDate)
WHERE centerID IN (SELECT centerID FROM DAY_CARE_ENROLMENT
WHERE DAY_CARE_CENTER.centerID=DAY_CARE_ENROLMENT.centerID);

1 Ответ

1 голос
/ 09 июня 2019

Если я правильно понимаю, вам нужно агрегировать, прежде чем пытаться UPDATE. То есть, агрегирование в подзапросе и JOIN в обновляемую таблицу:

UPDATE DAY_CARE_CENTER dcc JOIN
       (SELECT dce.centerID, COUNT(*) as cnt
        FROM DAY_CARE_ENROLMENT dce
        GROUP BY dce.centerID
       ) dce
       ON dcc.centerID = dce.centerID
    SET totalEnrol = cnt;

Это, вероятно, плохой подход. Счетчик будет устаревшим при следующем изменении строки в DAY_CARE_ENROLMENT. Вам нужно будет либо повторно запустить UPDATE, либо начать использовать триггеры insert / update / delete.

Лучше рассчитывать такие значения на лету. Суммируйте их только тогда, когда это необходимо для повышения производительности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...