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

0

У меня есть таблица преподавателей, и у каждого преподавателя есть определенное количество учеников под ним. Итак, есть "текущий" столбец, который представляет собой количество студентов, находящихся в настоящее время под ними.

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

  • 0
    Всем спасибо
Теги:
self-updating

2 ответа

2
Лучший ответ

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

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

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

1

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

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

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

  • 0
    Это ++ / - ОП хочет избежать ...
  • 0
    Возможно, он не хочет всегда помнить ++ / - об обновлениях таблиц (будь то код или изменения вручную) и беспокоиться о том, что current столбец неточен. Триггеры могут решить это. Он должен учитывать соотношение чтения / записи в БД и размер этих таблиц, чтобы решить, является ли представление или триггерное решение лучшим.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню