我正在尝试创建一个类似于堆栈溢出的单个查询,它将为我提供投票数,但也要确保当前查看的用户如果已经投票,则无法再次投票。
我的查询目前看起来像
SELECT cid, text, COUNT(votes.parentid) FROM comments LEFT JOIN votes ON comments.cid=votes.parentid AND votes.type=3 WHERE comments.type=0 AND comments.parentid='$commentParentid' GROUP BY comments.cid
但我完全不知道如何添加支票以查看用户ID是否在投票表中。
另一个选项是添加单独的查询
SELECT COUNT(*) FROM votes WHERE userid='$userid' AND parentid='$commentParentid' AND type=3
我只是意识到自己已经迷失了,我甚至不知道要提供什么标签。
答案 0 :(得分:1)
SELECT cid, text, COUNT(votes.parentid),
COUNT(IF(votes.userid='$userid',1,NULL)) = 0 AS can_vote
FROM comments
LEFT JOIN votes ON comments.cid=votes.parentid AND votes.type=3
WHERE comments.type=0 AND comments.parentid='$commentParentid'
GROUP BY comments.cid
如果您坚持在SQL中执行此操作,则应根据用户对评论进行投票的次数为您提供标记can_vote
。