Не могу написать запрос MySQL, я хочу - PullRequest
0 голосов
/ 24 августа 2010

У меня есть таблица (Counts) со многими записями, подобными этой:

ID | userid | count | entrydate

где ID - это автоматический ввод PK, идентификатор пользователя относится к моей таблице Users, count - случайное целое число, а entrydate - это метка времени Unix.

У меня также есть таблица Listmembers:

listid | userid

, где оба поля вместе являются PK, а listid относится к некоторой информации списка.

Я хочу написать запрос, который возвращает последнее введенное значение счетчика для каждого пользователя в определенном списке.

Я пробовал варианты с GROUP BY (возвращает только первый введенный элемент данных для идентификатора пользователя, а не самый последний), с ORDER BY (но это возвращает все значения для соответствующих пользователей), с выбором пользователя внутри моего запроса (где идентификатор пользователя IN (..)) и вне запроса (присоединиться к списку участников на ..). Ни один запрос не привел к тому, чего я хочу достичь: - /

Ответы [ 3 ]

3 голосов
/ 24 августа 2010
select c.userid, c.count  from counts C
inner join (select userid, max(entrydate)  
            from Counts group by userid) g 
   on c.userid =g.userid and c.entrydate = g.entrydate
inner join Listmembers L on l.userid = c.userid
where l.listid = @desiredList 

(Примечание: я никогда не использовал mysql. Это должен быть синтаксис T-Sql, но он должен быть достаточно стандартным для работы с SQL)

0 голосов
/ 24 августа 2010
SELECT c.count FROM Counts as c, Listmembers as l
 WHERE l.userid = c.userid 
        AND l.listid = 'specific_value'
        AND c.entrydate = MAX(c.entrydate)
0 голосов
/ 24 августа 2010

Используйте max(), чтобы сделать это:

max(entryDate)
...