15.07.2004, 13:29 | #1 |
Moderator
|
Query и exists join с group by
Добрый день!
Возникла такая задача: есть некий журнал изменения состояний объектов StatesLog. В нем несколько полей, в том числе: поле-идентификатор объекта (ObjectId), поле с кодом состояния (StateId), поле даты изменения состояния (ChgDate). Состояния каждого объекта меняются не чаще 1 раза в сутки. Необходимо сделать режим отображения только текущих состояний объектов, но отображать при этом все поля журнала. Что сделал я: попытался присоединить StatesLog к самой себе по exists join, линк по полям ObjectId и ChgDate, с установленной группировкой по ObjectId и выбором максимума по ChgDate. Вот код метода init(): PHP код:
1. Как вы думаете, почему так происходит и как это побороть? 2. Может быть, есть другой способ решить задачу? Не забываем, что нужно отображать все поля журнала. Группировку по всем полям не предлагать, с этим есть проблемы, т.к. я привел упрощенный вариант задачи. АХАРТА 3.0СП2 Спасибо
__________________
Андрей. |
|
15.07.2004, 14:49 | #2 |
NavAx
|
Попробуй убрать
PHP код:
|
|
15.07.2004, 14:58 | #3 |
----------------
|
Не знаю, как это выразить через Query...
PHP код:
|
|
15.07.2004, 15:12 | #4 |
Moderator
|
2 Raz:
Нельзя убрать, это команда, как раз создающая выражение "group by ObjectId". Мне же нужно сгруппировать по объектам.
__________________
Андрей. |
|
15.07.2004, 16:18 | #5 |
----------------
|
Андрей,
а как должен выглядеть на SQL запрос с EXISTS? |
|
16.07.2004, 12:46 | #6 |
Moderator
|
Чтой-то я сам не могу догнать, как это может выглядеть на SQL. Похоже, через EXISTS никак; по крайней мере то, что я попытался набросать на SQL, не сработало.
Ну что-ж, спасибо всем, потратившим свое время на это дело
__________________
Андрей. |
|
21.07.2004, 16:41 | #7 |
Снова балуюсь косаптой :)
|
Умный совет :-)
Нарисуй вьюху с группировкой по ObjectId и агрегирующей функцией MAX(ChgDate) и вот эту вьюху с StatesLog в своем query и вяжи. Правильно то, что просто!
__________________
Бесты и регарды! |
|
21.07.2004, 19:12 | #8 |
Moderator
|
Реально работает, спасибо!
Не привык еще к этим новшествам, вьюхам всяким, после 2.5
__________________
Андрей. |
|