![]() |
#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 Спасибо
__________________
Андрей. |
|
![]() |
#2 |
NavAx
|
Попробуй убрать
PHP код:
|
|
![]() |
#3 |
----------------
|
Не знаю, как это выразить через Query...
PHP код:
|
|
![]() |
#4 |
Moderator
|
2 Raz:
Нельзя убрать, это команда, как раз создающая выражение "group by ObjectId". Мне же нужно сгруппировать по объектам.
__________________
Андрей. |
|
![]() |
#5 |
----------------
|
Андрей,
а как должен выглядеть на SQL запрос с EXISTS? |
|
![]() |
#6 |
Moderator
|
Чтой-то я сам не могу догнать, как это может выглядеть на SQL. Похоже, через EXISTS никак; по крайней мере то, что я попытался набросать на SQL, не сработало.
Ну что-ж, спасибо всем, потратившим свое время на это дело ![]()
__________________
Андрей. |
|
![]() |
#7 |
Снова балуюсь косаптой :)
|
![]()
Нарисуй вьюху с группировкой по ObjectId и агрегирующей функцией MAX(ChgDate) и вот эту вьюху с StatesLog в своем query и вяжи. Правильно то, что просто!
![]()
__________________
Бесты и регарды! |
|
![]() |
#8 |
Moderator
|
Реально работает, спасибо!
Не привык еще к этим новшествам, вьюхам всяким, после 2.5 ![]()
__________________
Андрей. |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|