2014-12-03 3 views
0

Я работаю на сервере MySQL, и я хочу запустить запрос для нескольких идентификаторов пользователя для возврата статистики.Возвращение отдельных строк для нескольких пользователей

select 
    Firstname, 
    Lastname, 
    email, 
    count(distinct startTime) as "total Rounds", 
    MAX(starttime) as "Last Round" 
from users.users 
join rounds.rounds on rounds.rounds.userId = users.users.userId 
where users.userid and rounds.userId ="ENTER A USER ID HERE" 

Любые предложения по получению результатов для нескольких пользователей?

+0

ОП, я знаю, что вы уже это решили, но чувствовал, что стоит прокомментировать эту [ссылку] (http://dev.mysql.com/doc/refman/5.0/en/group-by-functions. html) для совокупных функций, которые, вероятно, будут действительно полезны при проблемах этого типа. – AdamMc331

ответ

1

Вы можете использовать функцию COUNT(), а просто использовать GROUP BY, чтобы получить количество для каждого пользователя, например:

SELECT firstName, lastName, email, COUNT(distinct startTime) AS totalRounds, MAX(startTime) AS lastRound 
FROM users u JOIN rounds r ON r.userId = u.userId 
GROUP BY u.userId; 

Это будет группа всех строк от индивидуального пользователя, сосчитать уникальные времена начала для этого пользователя и последнее время начала, но я уверен, что вы уже поняли эту концепцию.

1

Использование group by:

select Firstname, Lastname, email, count(distinct startTime) as "total Rounds", 
     MAX(starttime) as "Last Round" 
from users.users u join 
    rounds.rounds r 
    on r.userId = u.userId 
group by Firstname, Lastname, email; 

Кроме того, научиться использовать псевдонимы таблиц. Они упрощают чтение и чтение запросов.

+0

Я полагаю, что это будет зависеть от таблицы OP, но группировки с помощью 'userId' может быть достаточно, не так ли? – AdamMc331

+1

Лучше группировать по идентификатору пользователя, если есть пользователи с тем же именем. – Barmar

+0

@ Barmar. , , Я группирую поля в 'select'. Я считаю, что это лучший подход к агрегации. –

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