Вниз
Скачать: 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 вся ветка

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



Память: 0.46 MB
Время: 0.006 c
2-1197293148
deras
2007-12-10 16:25
2008.01.06
Помогите с запросом


2-1197161141
O.Snopok
2007-12-09 03:45
2008.01.06
Как приостановить выполнение процедуры до изменения Clipboard


2-1197289594
Kolan
2007-12-10 15:26
2008.01.06
SHFileOperation ругается


15-1196527077
Fraider
2007-12-01 19:37
2008.01.06
С вами такое бывает?


3-1188654911
-novice-
2007-09-01 17:55
2008.01.06
индексы в связанных таблицах




   Наверх