Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.01.06;
Скачать: CL | DM;

Вниз

Подскажите SQL-запрос(ы), пожалуйста.   Найти похожие ветки 

 
Zeqfreed ©   (2007-08-31 10:59) [0]

В конечном счете, необходимо выбрать из таблицы с полями id, user_id, start_time, state кол-во пользователей (user_id) имеющих один и тот же статус (state), имеющий максимальное время модификации (start_time) меньше заданного.

Если возможно, хотелось бы одним запросом, но что-то я сомневаюсь. У самого никак не получается пока составить даже двумя запросами, так, чтобы возвращенные данные требовали минимум пост-обработки.

СУБД — MySQL.
Буду благодарен, если гуру выскажут свое мнение :)


 
de.   (2007-08-31 11:10) [1]


> имеющий максимальное время модификации (start_time) меньше
> заданного.

Недоконца понятно. Разъясни...


 
Кщд ©   (2007-08-31 11:13) [2]


select t.state, count(t.id)
from sometable t
where t.start_time = (select max(t2.start_time)
                            from sometable t2
                            where t2.user_id = t.user_id
                                     and t2.start_time < :p_start_time
                             )
group by t.state


 
Zeqfreed ©   (2007-08-31 11:16) [3]

> de.   (31.08.07 11:10) [1]

Ну start_time < xxx :) Это самая несложная часть.

Пока у меня получился такой запрос:
SELECT state, COUNT(user_id) FROM t_states
WHERE id IN (SELECT id FROM `t_states` WHERE start_time <= NOW() GROUP BY state ORDER BY start_time DESC)
GROUP BY user_id


Кажется, работает. Но если есть лучший вариант, я с радостью выслушаю :)


 
Zeqfreed ©   (2007-08-31 11:18) [4]

> Кщд ©   (31.08.07 11:13) [2]

А вот по времени сравнивать это не лучший вариант, т.к. оно может случайно оказаться одинаковым для разных статусов/пользователей. Так у меня было раньше, потом я отказался от этого вариант по обозначенной причине.


 
Че   (2007-08-31 11:21) [5]


1. Выбераешь максимальное время модификации (start_time) меньше заданного.
2. SELECT COUNT(*) AS Kol, state
   FROM (.. 1 ..) t
   GROUP BY state

Мне кажется что > Кщд ©   (31.08.07 11:13) [2] совершенно правельно оформил код...


 
Zeqfreed ©   (2007-08-31 11:30) [6]

Да, кажется, что по дате выборка тоже правильно работает. Так и сделаю, пожалуй.



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

Текущий архив: 2008.01.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
15-1196688836
Некто__
2007-12-03 16:33
2008.01.06
Можно ли найти такую ветку?


2-1197369129
Washington
2007-12-11 13:32
2008.01.06
WinAPI - закрашивание круглой кнопки


2-1197042910
Zheksik
2007-12-07 18:55
2008.01.06
Почему 0.20 <= 0.20 ложь???


15-1196462298
Kostafey
2007-12-01 01:38
2008.01.06
С днем рождения ! 1 декабря


15-1196759620
boriskb
2007-12-04 12:13
2008.01.06
Прошу высказать мнения о книге