我的sql语句有问题。我有一个jqueryupvote插件,它在我的数据库中保存真值和假值。如果用户按upvote,则在upvote volume中保存true;如果用户按down vote,则在down vote列中保存true;如果用户按downvote,则在already upvote topic中保存true;如果用户按downvote,则在upvote列中保存false。我知道这有点混乱。此外,对新主题进行投票将导致在您单击的另一列中保存0。问题是
Fig 1: when clicked up |Fig 2: when clicked down
但当我刷新页面时,数字仍然是0
我的sql查询:
SELECT
SUM(
IF(Upvote='true' AND Downvote='false',1,
IF(upvote='false' AND Downvote='true',-1,
IF(Upvote='false' AND Downvote='false',-1,
IF(Downvote='false',1,
IF(Downvote='true' AND (Upvote='0' OR Upvote=false),-1,0)
)
)
)
)) as `votes`
从topicd=:电流的额定值
1条答案
按热度按时间njthzxwz1#
为了正确记录选票,你需要3条信息,
投票的主题是什么。
投票的人。
如果投票结果是赞成还是反对
这需要多对多关系。许多用户可以对许多主题进行投票。这样说很有帮助,看看有没有道理。
例如,我们不能说,许多用户可以就一个主题投票。因为我想你会有更多的主题。我们不能说很多主题都是由一个用户投票决定的。这两个都没有什么意义。
多对多关系需要3张表。你有这个
然后你可以简单地计算一个主题
然后你就可以简单的翻转
value
或删除0的记录。您可以判断用户是否对某个问题进行了投票,以及如何投票
对于您将获得的用户
no record
或者-1
或者1
. 那么设置按钮的状态就很简单了。你不能强迫数据进入一个不合适的模型。数据决定了它需要的关系。当你找到一个合适的你知道,因为每件事都变得琐碎。
最后一件事你应该
votes
打开组合唯一键user_id
以及topic_id
. 这样,用户就不能在同一主题上投2倍的票如果您不知道如何做到这一点,请在phpmyadmin的“结构”选项卡中,选中每个字段旁边的复选框,然后在下面的一些按钮中单击“唯一”(不是那一排,而是下面那一排)。它甚至可以是主键,但是有一个单独的代理键(auto increment id)的参数