У меня есть таблица преподавателей, и у каждого преподавателя есть определенное количество учеников под ним. Итак, есть "текущий" столбец, который представляет собой количество студентов, находящихся в настоящее время под ними.
Тем не менее, я не хочу, чтобы ++ и - каждый раз, когда я переключаю ученика на другой факультет. Есть ли способ обновить столбец с помощью запроса, использующего count()? Я считаю, что проще и точнее использовать запрос "select count() от студента, где advisor = 2", например, используя мой текущий столбец.
Для этого используйте представление:
CREATE VIEW studentCount AS
SELECT
profID,
profName,
whatever,
(SELECT COUNT(*)
FROM studentTable
WHERE studentTable.profID=profTable.profID
) AS studentCount
FROM profTable;
Очевидно, что это нужно немного помассировать, чтобы соответствовать вашей схеме, но по существу, настроить свое представление, чтобы иметь все столбцы таблицы с информацией о факультете и добавить столбец в конце, который подсчитывает количество, которое вы хотите в нем.
Триггеры могут быть решением вашей проблемы?
http://dev.mysql.com/doc/refman/5.5/en/triggers.html
Вы можете создать триггер, который автоматически обновляет вашу таблицу преподавателей каждый раз, когда студент переключается на факультет.
current
столбец неточен. Триггеры могут решить это. Он должен учитывать соотношение чтения / записи в БД и размер этих таблиц, чтобы решить, является ли представление или триггерное решение лучшим.