На треть неправильный результат запроса. Помогите.

Valentin

Новичок
На треть неправильный результат запроса. Помогите.

Привет Всем!

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

Результат:
ID-последний запрос (MAX(requests_id)), результат этого последнего запроса (t1.requests_results_id = [1,2,3,4,...]), и имя пользователя (t2.users_name);

SELECT MAX(t1.requests_id) as requests_id, t1.requests_results_id, t2.users_name
FROM requests t1, users t2
WHERE t1.users_id = t2.users_id
GROUP BY
t2.users_name
ORDER BY requests_id DESC;

Результат выходит верный ровно на треть.
Создаётся список имён пользователей, ID - последнего запроса для каждого пользователя... А вот результат (t1.requests_results_id ) неверный. Допустим, результат последнего запроса какого-то пользователя был 5, а в итоге возвращает 2 (2 - это результат первого запроса пользователя).

Почему вместо "5" подставляется "2"?

Заранее, Огромнейшое Спасибо!
 

chira

Новичок
Результат выходит верный ровно на треть.
выводит всё верно, что запрашивал, то и получил ...
как ты думаешь, группируя по t2.users_name какое значение должно быть выбрано для t1.requests_results_id?
ты хочешь что бы было 5, а откуда серверу знать, что ты хочешь?

-~{}~ 08.11.05 14:03:

можно использовать такую конструкцию
Код:
SELECT MAX(t1.requests_id) as requests_id
, substring(MAX(concat(lpad(t1.requests_id,10,'0')
   ,t1.requests_results_id)),11) requests_results_id
, t2.users_name 
.....
 

Valentin

Новичок
Спасибо большое. Действительно, точно серваку не указал , что выбрать из результата при такой группироваке. Думал, что раз выберет максимальный requests_id, то к нему прикрепит соответственный requests_id. Проморгал :)
 
Сверху