我有一个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,我希望它将这两个记录作为匹配返回。
答案 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
。