不确定我的逻辑在这一点上是否正常工作。我有一个表Documents
,每个项目都有一个唯一的ID和文档的名称。然后我有另一个表DocVotes
,用于存储用户对文档的投票(每个记录一个投票)有一个Vote
字段BOOL
(1表示YES,0表示NO)。
我正在尝试检查特定用户MemberID
之前是否对该文档进行了投票,显然您无法对自己的文档进行投票(通过排除AuthorID
进行检查)
这是我正在尝试的查询
SELECT d.ID, d.Name, COUNT(dv.MemberID)
FROM Documents AS d
LEFT JOIN DocVotes AS dv ON dv.ItemID=d.ID
AND dv.MemberID=32
WHERE d.Status = 'Proposed'
AND d.AuthorID<>32
我认为它应该做什么:获取ID
,Name
,并计算MemberID
投票的数量(本例中为32)然后只需检查计数和如果计数为0,那么这意味着用户尚未投票,如果是1那么他们有(你只能投票一次)。
但是我得到的数量为6,但该用户仅对此特定文档投了1票。所以很明显这只是那个条目......(我只回来了一行)
思想?
答案 0 :(得分:1)
请注意评论的内容:
尝试使用GROUP BY d.ID
:
SELECT d.ID, d.Name, COUNT(dv.MemberID)
FROM Documents AS d
LEFT JOIN DocVotes AS dv ON dv.ItemID=d.ID
AND dv.MemberID=32
WHERE d.Status = 'Proposed'
AND d.AuthorID<>32
GROUP BY
d.ID