|
|
|
v8: СКД: упорядочивание во вложенном запросе | ☑ | ||
|---|---|---|---|---|
|
0
kulibabav
26.06.13
✎
17:09
|
Добрый день!
Есть приложения к договору лизинга, и графики, на них ссылающиеся. Для каждого приложения может быть несколько графиков. Возьмем все графики для одного приложения, и, упорядочив по дате утверждения оставим только те, у которых она максимальна (их может быть несколько, т.к. графики создаются копированием, и даты утверждения у нескольких графиков могут полностью совпадать). Теперь оставшиеся графики упорядочим по дате формирования (другой параметр) и оставим только те, у которых она максимальна. Полученное множество графико мне нужно прилепить к запросу для каждого приложения. Упорядочивание во вложенном запросе СКД не работает (вкладка "Порядок" доступна только для основной выборки) и я не придумал ничего умнее, как сделать запрос тройной вложенности. Текст запроса ниже. Может, есть способ лучше? Подскажите пожалуйста! ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ хлГрафики.Ссылка КАК График, хлГрафики.ПриложениеКДоговору КАК ПриложениеКДоговору ИЗ Справочник.хлГрафики КАК хлГрафики ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ хлГрафики.ДатаУтверждения КАК ДатаУтверждения, хлГрафики.ПриложениеКДоговору КАК ПриложениеКДоговору, МАКСИМУМ(хлГрафики.ДатаФормирования) КАК ДатаФормирования ИЗ Справочник.хлГрафики КАК хлГрафики ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ МАКСИМУМ(хлГрафики.ДатаУтверждения) КАК ДатаУтверждения, хлГрафики.ПриложениеКДоговору КАК ПриложениеКДоговору ИЗ Справочник.хлГрафики КАК хлГрафики ГДЕ хлГрафики.ВидГрафика = ЗНАЧЕНИЕ(Справочник.хлВидыГрафиков.ГрафикПлатежейПоДоговоруЛизинга) {ГДЕ (хлГрафики.ДатаУтверждения < &ДатаСрезаОтчета)} СГРУППИРОВАТЬ ПО хлГрафики.ПриложениеКДоговору) КАК МаксимальнаяДатаУтвержденияПоПриложениям ПО хлГрафики.ПриложениеКДоговору = МаксимальнаяДатаУтвержденияПоПриложениям.ПриложениеКДоговору И хлГрафики.ДатаУтверждения = МаксимальнаяДатаУтвержденияПоПриложениям.ДатаУтверждения ГДЕ хлГрафики.ВидГрафика = ЗНАЧЕНИЕ(Справочник.хлВидыГрафиков.ГрафикПлатежейПоДоговоруЛизинга) {ГДЕ (хлГрафики.ДатаФормирования < &ДатаСрезаОтчета)} СГРУППИРОВАТЬ ПО хлГрафики.ПриложениеКДоговору, хлГрафики.ДатаУтверждения) КАК МаксимальнаяДатаФормированияДляМаксимальнойДатыУтвержденияПоПриложениям ПО хлГрафики.ПриложениеКДоговору = МаксимальнаяДатаФормированияДляМаксимальнойДатыУтвержденияПоПриложениям.ПриложениеКДоговору И хлГрафики.ДатаУтверждения = МаксимальнаяДатаФормированияДляМаксимальнойДатыУтвержденияПоПриложениям.ДатаУтверждения И хлГрафики.ДатаФормирования = МаксимальнаяДатаФормированияДляМаксимальнойДатыУтвержденияПоПриложениям.ДатаФормирования ГДЕ хлГрафики.ВидГрафика = ЗНАЧЕНИЕ(Справочник.хлВидыГрафиков.ГрафикПлатежейПоДоговоруЛизинга)) КАК АктуальныеГрафикиПоПриложениям ПО хлДоговорЛизингаПредметыЛизинга.Приложение = АктуальныеГрафикиПоПриложениям.ПриложениеКДоговору |
|||
|
1
zladenuw
26.06.13
✎
17:13
|
||||
|
2
kulibabav
26.06.13
✎
17:30
|
(1)Думаю, что в моем случае нумерация вряд ли будет эффективнее, потому что требуется упорядочивание последовательно по двум полям. Мало того, что полный код запроса получится больше, я думаю, что и сильно быстрее работать не станет, ведь нумерация - это по сути те же последовательные пробегания по выборкам...
Однако, все равно спасибо за оперативный ответ... Посоветуете еще какой-нибудь подход кроме нумерации, или может мой запрос не такой уж и страшный? :-) |
|||
|
3
zladenuw
26.06.13
✎
17:33
|
(2) ты не видел еще страшных. нормальный запрос. вот когда 3000 строк. то это типа большой
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |