Помогите с запросом
От: Demon051  
Дата: 20.05.09 10:20
Оценка:
Всем привет.
Ситуация такова. Есть таблица, в которую записываются события прохода пользователей через точки доступа.

Из этих точек доступа есть такие, которые объединяются в некоторую область доступа. Несколько точек — вход в область, несколько — выход из области.
Нужно написать запрос, который выберет пользователей, находящихся на данный момент внутри области.
Т.е. прошедших через одну из входных точек, но не прошедших ни через одну из выходных.

Структура записи в таблице упрошенно такая:
Поле1: UserID — идентификатор пользователя.
Поле2: PointID — идентификатор точки, через которую пользователь прошел.
Поле3: EntryDT — дата и время прохода.

Рассчитывая выбрать максимальную дату прохода по всем точкам области для каждого пользователя,
пытался сделать так
select UserID, max(EntryDT) As DT, PointID from _Table_ group by UserID HAVING PointID IN(_список точек доступа, относящихся к области_);

Ругается, требует в групировке наличия PointID. (очень странно, что диалект SQL, используемый в foxpro этот запрос проглатывает без проблем )
Если добавить PointID в группировку, выдаёт максимальные даты по всем указанным точкам, а не только по той, по которой дата прохода самая максимальная из всех перечисленных, через которым ходил пользователь

Если сделать так
select UserID, max(EntryDT) As DT from _Table_ group by UserID HAVING PointID IN(...);
то получаю только идентификаторы пользователей и даты, но не получаю идентификаторы точек, что не есть хорошо — они нужны.

Подскажите, как быть, чтобы выбрать и даты и ид-ы пользователей и ид-ы точек. Можно ли одним запросом обойтись?
Может джоин како-нибудь или что-то ещё?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.