Объединение запросов в MySQL - PullRequest
0 голосов
/ 19 ноября 2008

Я знаю, что вы можете объединить несколько таблиц с помощью оператора Join, но есть ли способ объединить эти два запроса в один ?

SELECT Statistics.StatisticID
FROM Statistics
ORDER BY `SubmittedTime` DESC
LIMIT 0, 10

А этот?

SELECT COUNT(Votes.StatisticID)
FROM Votes
WHERE Votes.StatisticID = ?

(пух удален)

В настоящий момент я достиг чего-то, что почти работает.

SELECT Statistics.StatisticID, COUNT(Score.StatisticID) AS Votes
FROM `Statistics`
LEFT JOIN `Votes` AS `Score` ON `Statistics`.`StatisticID` = `Score`.`StatisticID`
ORDER BY `SubmittedTime` DESC
LIMIT 0, 10

Таблица Votes - это простой StatID, объединяющий UserID. В моем тестовом случае он содержит 3 строки, две с StatID 5 - 1 с StatID 2.

Мой запрос будет работать, если я добавлю предложение WHERE, например WHERE StatisticID = 5, и верну 2 голоса. Однако, если я удалю предложение WHERE, мне все равно будет возвращена одна строка и 3 голоса.

Можно ли объединить эти запросы или мне придется запускать второй для каждого результата (очевидно, не желательно)?

1 Ответ

1 голос
/ 19 ноября 2008

Предполагая, что вы хотите посчитать количество голосов на статистику

SELECT StatisticID, COUNT(*) AS CountVotes
FROM `Votes`
GROUP BY Statistics.StatisticsID

Я не вижу причины, по которой таблицы должны объединяться.

[РЕДАКТИРОВАТЬ] Ах ... Я вижу, вы хотите сделать заказ по представленному времени таблицы статистики.

SELECT Votes.StatisticID, COUNT(*) AS CountVotes
FROM `Votes` JOIN Statistics ON votes.statisticsID = Statistics.StatisticsID
GROUP BY Statistics.StatisticsID
ORDER BY Statistics.SubmittedTime
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...