2012-05-20 3 views
0

Вот мой запрос:мс сосчитать макс доступа

SELECT Count(*) AS CountOfJoker, tblPrediction.GameID 
FROM (tblUser INNER JOIN (tblPool INNER JOIN tblUserPool ON tblPool.PoolID = tblUserPool.PoolID) ON tblUser.UserID = tblUserPool.UserID) INNER JOIN (tblResult INNER JOIN tblPrediction ON tblResult.GameID = tblPrediction.GameID) ON tblUser.UserID = tblPrediction.UserID 
GROUP BY tblPrediction.GameID, tblPrediction.Joker, tblResult.GroupName, tblPool.PoolID 
HAVING (((tblPrediction.Joker)=True) AND ((tblResult.GroupName)='A') AND ((tblPool.PoolID)=314)); 

Вот результат:

CountOfJoker GameID 
2  1 
2  2 
2  9 
1  10 
1  17 
3  18 

Я хотел бы Мах CountOfJoker со следующим выходом:

CountOfJoker GameID 
3  18 

Thanks Drew

ответ

1

Вы можете использовать select top и order by ... desc

SELECT TOP 1 Count(*) AS CountOfJoker, tblPrediction.GameID 
    FROM (tblUser INNER JOIN (tblPool INNER JOIN tblUserPool ON tblPool.PoolID = tblUserPool.PoolID) ON tblUser.UserID = tblUserPool.UserID) INNER JOIN (tblResult INNER JOIN tblPrediction ON tblResult.GameID = tblPrediction.GameID) ON tblUser.UserID = tblPrediction.UserID 
    GROUP BY tblPrediction.GameID, tblPrediction.Joker, tblResult.GroupName, tblPool.PoolID 
    HAVING (((tblPrediction.Joker)=True) AND ((tblResult.GroupName)='A') AND ((tblPool.PoolID)=314)); 
    ORDER BY Count(*) DESC 
+0

Ответ 1 почти работал. Когда есть много счетчиков с одинаковым значением, запрос возвращает много строк на выходе. Но когда я удаляю порядок по count (*) desc, он возвращает только первый счет, даже если это не самый большой подсчет. – Drew

+0

попробуйте 'ORDER BY CountOfJoker DESC' (не уверен, что он работает в MS Access) – StrubT

+0

, который не работает, ms-доступ жалуется на CountOfJoker – Drew

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