私のロジックがこれで完全に機能しているかどうかはわかりません。Documents
各アイテムの一意のIDとドキュメントの名前を持つテーブルがあります。次に、ドキュメントに対するユーザーの投票を格納する別のテーブルDocVotes
があります(レコードごとに1票)(YESの場合は1、NOの場合は0)フィールドVote
があります。BOOL
特定のユーザー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行しか戻っていません)
考え?