2012-01-21 63 views
0

假设我正在运行一个小型投票计数器产品。这些值存储在数据库“内容”中,其中包含一定数量的投票(“count”),我也有一个名为“rank”的行,我将如何autosum这些值,以便我不必迭代通过在PHP中的每一个,导致脚本巨大放缓?MySQL中的简单评分系统

回答

2

如果你有一个这样的结构在表

与领域项目 :姓名,ID,计数,...

,你可以简单地做:在项目

最多选票使用id = $ ID

UPDATE item SET count = count + 1 WHERE id='$id'; 

向下投票与标识的项= $ ID

UPDATE item SET count = count - 1 WHERE id='$id'; 

count将存储总票数。

如果你想检查避免每个用户超过一票/ IP,你应该存储在另一个表中的每一个人投票和发送前面的查询前检查非重复投票这个aditional的表。

0

像这样的东西(根据您的具体的表结构)应该工作:

UPDATE item SET rating = 
    (SELECT count(*) FROM rates WHERE type 'positive') - 
    (SELECT count(*) FROM rates WHERE type 'negative'); 

欲了解更多信息,看看在MySQL docs