SQL (mySQL) запрос, чтобы показать запись с большинством голосов - PullRequest
0 голосов
/ 10 марта 2012

Три таблицы: вопросы, ответы и голоса.

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)

Таким образом, 2 голоса за ответ 100 на вопрос 4 будут выглядеть так:

вопросов:

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
...