Как постоянно обновлять один столбец?

У меня есть таблица факультетов, и у каждого факультета есть определенное количество студентов под ним/ней. Таким образом, есть «текущий» столбец, в котором указано количество студентов, которые в настоящее время находятся под их началом.

Однако я не хочу ++ и -- каждый раз, когда я перевожу студента на другой факультет. Есть ли способ обновлять столбец с помощью запроса, использующего count()? Я считаю, что проще и точнее использовать запрос «выберите количество () от студента, где советник = 2», например, используя мой текущий столбец.


person yuudachi    schedule 22.06.2010    source источник


Ответы (2)


Для этого используйте представление:

CREATE VIEW studentCount AS 
SELECT 
    profID, 
    profName, 
    whatever, 
    (SELECT COUNT(*) 
     FROM studentTable 
     WHERE studentTable.profID=profTable.profID
    ) AS studentCount 
FROM profTable;

Очевидно, что это нужно немного помассировать, чтобы соответствовать вашей схеме, но, по сути, настройте свое представление так, чтобы все столбцы таблицы содержали информацию о факультетах, и добавьте столбец в конце, который подсчитывает число, которое вы хотите в нем.

person Ben S    schedule 22.06.2010

Триггеры могут быть решением вашей проблемы?

http://dev.mysql.com/doc/refman/5.5/en/triggers.html

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

person Ivar Bonsaksen    schedule 22.06.2010
comment
Возможно, он не хочет всегда помнить ++/-- при обновлении таблицы (будь то кодовые или ручные изменения) и беспокоиться о том, что столбец current неточен. Триггеры могут решить эту проблему. Он должен учитывать соотношение чтения/записи базы данных и размер этих таблиц, чтобы решить, является ли решение представления или триггера лучшим. - person Ivar Bonsaksen; 22.06.2010