Lan*_*ler 3 sql redundancy inner-join
我正在尝试使用连接从不同的表中选择一些数据。
首先,这是我的 SQL (MS) 查询:
SELECT Polls.pollID,
Members.membername,
Polls.polltitle, (SELECT COUNT(*) FROM PollChoices WHERE pollID=Polls.pollID) AS 'choices',
(SELECT COUNT(*) FROM PollVotes WHERE PollVotes.pollChoiceID = PollChoices.pollChoicesID) AS 'votes'
FROM Polls
INNER JOIN Members
ON Polls.memberID = Members.memberID
INNER JOIN PollChoices
ON PollChoices.pollID = Polls.pollID;
Run Code Online (Sandbox Code Playgroud)
此查询中涉及的表在这里:

查询返回此结果:
pollID | membername | polltitle | choices | votes
---------+------------+-----------+---------+-------
10000036 | TestName | Test Title| 2 | 0
10000036 | TestName | Test Title| 2 | 1
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激。
您的 INNER JOIN withPollChoices为给定的行带来了超过 1 行,poll因为投票 10000036 有 2 个选择,如choices列所示。
您可以更改要使用的查询GROUP BY并获取计数。
如果您在PollVotesorPolls表中没有每个成员的条目,则需要使用LEFT JOIN
SELECT Polls.pollID,
Members.membername,
Polls.polltitle,
COUNT(PollChoices.pollID) as 'choices',
COUNT(PollVotes.pollvoteId) as 'votes'
FROM Polls
INNER JOIN Members
ON Polls.memberID = Members.memberID
INNER JOIN PollChoices
ON PollChoices.pollID = Polls.pollID
INNER JOIN PollVotes
ON PollVotes.pollChoiceID = PollChoices.pollChoicesID
AND PollVotes.memberID = Members.memberID
GROUP BY Polls.pollID,
Members.membername,
Polls.polltitle
Run Code Online (Sandbox Code Playgroud)