Главная страница
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.013 c
15-1196426548
Автор
2007-11-30 15:42
2008.01.06
О разделе "Статьи"


9-1164813712
nordic3
2006-11-29 18:21
2008.01.06
прыжок в игре


2-1197047053
Res
2007-12-07 20:04
2008.01.06
Подскажите


2-1196876199
greg123
2007-12-05 20:36
2008.01.06
Изменение цвета, кот. подсвечивается выделенный текст в RichEdit


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