Вниз
Скачать: CL | DM;

Помогите составить SQL-запрос   Найти похожие ветки 

 
SerJaNT ©   (2007-11-24 04:30) [0]

Имеется таблица:

Id  |  user_name  |  user_date
-----------------------------
1        aaaa             12.09.07
2        bbbb             11.09.07
3        bbbb             15.09.07
4        aaaa             25.09.07
5        aaaa             21.09.07
6        aaaa             13.09.07
7        cccc             13.09.07

и т.д.

user_name могут быть одинаковыми.

Нужно составить SQL-запрос, который выберет записи по последней дате для каждого user_name т.е. если записей поля user_name несколько одиннаковых, то выбрать самую новую по дате user_date и при этом сверху должны быть пользователи у которых дубликатов самих себя в поле user_name больше всех. И так в порядке убывания...

Результатом должно получиться:

Id  |  user_name  |  user_date
-----------------------------
1        aaaa             25.09.07
3        bbbb             15.09.0
7        cccc             13.09.07

СУБД - MySQL.

Делаю так:
SELECT DISTINCT user_name, user_date FROM myTable GROUP BY user_name ORDER BY user_date ASC

Но результат не тот.. Он не выводит новые записи по значению поля user_date


 
tesseract ©   (2007-11-24 14:13) [1]


> должны быть пользователи у которых дубликатов самих себя
> в поле user_name больше всех.


Тут надо ввести триггер или спец поле для подсчета user_name-оф юзеров. Так проще и быстрее будет.


> Он не выводит новые записи по значению поля user_date


выводит вроде самую последнюю.


 
jack128 ©   (2007-11-24 14:34) [2]

Хм. ПО идее - твой запрос вообще не должен выполняться.  

select user_name, max(user_date)
from my_table
group by user_name
order by user_name


 
jack128 ©   (2007-11-24 14:36) [3]


> этом сверху должны быть пользователи у которых дубликатов
> самих себя в поле user_name больше всех.

не учел Тогда так:

select user_name, max(user_date)
from my_table
group by user_name
order by count(*) desc


PS СУБД не мешало бы указать


 
SerJaNT ©   (2007-11-24 14:41) [4]


> PS СУБД не мешало бы указать


MySQL


 
SerJaNT ©   (2007-11-25 02:01) [5]


> jack128 ©   (24.11.07 14:36) [3]


С order by count(*) desc вообще не работает.
А без этого, все делает правильно, только не сортирует в порядке убывания по количеству дубликатов самих себя user_name


 
SerJaNT ©   (2007-11-25 02:17) [6]

Я вот так работает правильно

select zn_user, max(comm_date), count(*) as Cnt from cl_ph_comments
group by zn_user
order by Cnt desc

Спасибо всем!



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.015 c
15-1196009945
Kostafey
2007-11-25 19:59
2007.12.23
Интеграция Turbo JBuilder 2007 и Subversion


15-1196026503
Tos-ka
2007-11-26 00:35
2007.12.23
Подскажите условиями входит точка в тело или нет.


15-1195569942
Stanislav_
2007-11-20 17:45
2007.12.23
Админу


2-1196340674
webpauk
2007-11-29 15:51
2007.12.23
сохранение файлов


15-1195580908
master_asasin
2007-11-20 20:48
2007.12.23
Конференция




   Наверх