投票SQL难题

时间:2014-09-17 19:49:20

标签: php mysql sql

我有一个PHP系统,允许用户以1到5的比例投票,我想要做的是突出显示两个人给对方投票/得分相同的地方。我现在无法为我的PHP函数计算出SQL。

数据库看起来像这样

id, user_uid, voted_uid, score

当有人投票时,id为自动增量,user_id从会话uid插入,而voted_uid来自用户正在查看的图像,则得分为1-5的排名。

理论上我们正在寻找两个类似的行:

uid      user_uid      voted_uid     score
7         3              5            3
38        5              3            3

此时我想让我的php函数接受当前用户会话,然后将他们的投票和分数与其他用户匹配。

在上面的示例中,我的会话ID为3,我希望它将这两个记录作为匹配返回。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,你想要的是找到第一行的user_uid等于voted_uid的行对,反之亦然。但是,只有score在两行中都相同。

在这种情况下,这应该可以解决问题:

SELECT a.*
FROM table AS a
JOIN table AS b
  ON a.user_uid  = b.voted_uid
 AND a.voted_uid = b.user_uid
 AND a.score     = b.score;

如果您只想要提及"提及"特定的uid,您当然必须添加WHERE user_uid = 3 OR voted_uid = 3