Вниз
Скачать: 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.013 c
8-1171310423
man-1982
2007-02-12 23:00
2007.12.23
как из двух изображений сделать одно


2-1196074220
WFS
2007-11-26 13:50
2007.12.23
Дайте плз ссылку на статью о работе Delphi7 с MSWord 2003


2-1196247523
Petrovich
2007-11-28 13:58
2007.12.23
Как передать данные из TMemoryStream в динамический массив?


2-1196241829
Галинка
2007-11-28 12:23
2007.12.23
как сдвинуть строку?


15-1195716063
stone
2007-11-22 10:21
2007.12.23
Законы и их исполнение




   Наверх