2010-06-22 147 views
0

我有一个教师表,每个教师都有一定数量的学生在他/她下面。所以有一个“当前”专栏,这是目前在他们下面的学生人数。如何保持一列持续更新?

但是,我不想++和 - 每次我把一个学生换成另一个教师。有没有办法保持列使用计数()的查询更新?我发现使用来自advisor = 2的学生的select count()例如使用我当前的列更容易和更准确。

+0

谢谢大家 – yuudachi 2010-06-22 20:26:25

回答

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

这就是++/- OP想要避免... – 2010-06-22 19:04:29

+0

这可能是因为他不想永远记住++/- 表更新(无论是代码方式还是手动更改),并担心“当前”列不准确。触发器可以解决这个问题。他应该考虑数据库的读写比和这些表的大小来决定视图还是触发器解决方案是最好的。 – 2010-06-22 19:12:54