三个表:问题,答案和投票。
Fields in questions: qid, uid
Fields in answers: qid, aid, uid
Fields in votes: qid, aid, uid
(uid=userid, will be different for questions, answers, votes)
因此对问题4的答案100的2票赞成如下:
问题:
qid=4, uid=1
答案:
aid=100, qid=4, uid=2
投票:
aid=100, qid=4, uid=5
aid=100, qid=4, uid=6
此外,答案表有一个时间字段adate。
如何创建将显示的查询: 来自问题的所有字段和与投票中最相关记录的答案中的单个相关行,或者如果存在关联票数,则具有最早日期的答案(换言之,具有最多票数的答案,或者,如果否投票或平局,首先提交的答案)?
我想显示所有问题,无论是否有答案和所有答案,无论是否有投票。
看起来像2个左连接,某种count(),一个select max,以及某种order_by可以工作,但是无法让它工作 - 比如我开始用这样的东西,得到正确的投票数:
SELECT
votes.aid,
Count(*) AS total,
questions.qid
FROM
votes
INNER JOIN (SELECT votes.aid FROM votes GROUP BY votes.aid) AS answers ON answers.aid= votes.aid
LEFT OUTER JOIN questions ON questions.qid = votes.qid
GROUP BY votes.aid