【发布时间】:2013-03-19 13:17:46
【问题描述】:
不确定我的逻辑在这个问题上是否正确。我有一个表Documents,每个项目都有一个唯一的 ID 和文档的名称。然后我有另一个表DocVotes 存储用户对文档的投票(每条记录一个投票)有一个字段Vote 是BOOL(1 表示是,0 表示否)。
我正在尝试检查特定用户 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 票。所以很明显,这比那个条目还要多……(我只得到了 1 行)
想法?
【问题讨论】:
-
您可能需要 1) 一个小提琴,以便我们检查 2)
GROUP BY -
我实际上只是尝试过,我得到了 6 行的预期结果。我省略了
GROUP BY d.ID,现在效果很好。让我们明白的总是显而易见的......谢谢。 -
好!我把它放在答案中,以便可以将问题标记为已回答。