|  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   
				__________________ Андрей. | 
|  |