2008-11-18 2 views
0

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

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, Идентификатор_пользователя столяр. В моем тестовом примере он содержит 3 строки, два с StatID 5 - 1 с StatID 2.

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

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

+0

Не знаете, почему это получилось -1 ... – Ross 2008-11-20 21:07:48

ответ

1

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

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

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

[EDIT] А ... Я вижу, что вы хотите заказать по представленному времени в таблице статистики.

SELECT Votes.StatisticID, COUNT(*) AS CountVotes 
FROM `Votes` JOIN Statistics ON votes.statisticsID = Statistics.StatisticsID 
GROUP BY Statistics.StatisticsID 
ORDER BY Statistics.SubmittedTime 
+0

Я не знал о GROUP BY, отлично работает - спасибо! – Ross 2008-11-18 21:12:53

Смежные вопросы