Форум: "Базы";
Текущий архив: 2008.01.06;
Скачать: [xml.tar.bz2];
ВнизПодскажите 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c