2010-06-22 144 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