|
Помогите с запросом | ☑ | ||
---|---|---|---|---|
0
Botanik
21.08.12
✎
20:47
|
Есть периодический регистр сведений.
Запрос к нему: ВЫБРАТЬ ИсторияИзменеиняКонтрагентов.СтароеЗначение, ИсторияИзменеиняКонтрагентов.ДействеутС, ИсторияИзменеиняКонтрагентов.Контрагент ИЗ РегистрСведений.ИсторияИзменеиняКонтрагентов КАК ИсторияИзменеиняКонтрагентов ГДЕ ИсторияИзменеиняКонтрагентов.Контрагент В(&Массив) И ИсторияИзменеиняКонтрагентов.Объект = "Наименование" Результат запрота: СтарНазвание Дата1 Контрагент1 СтарНазвание Дата2 Контрагент1 СтарНазвание Дата Контрагент2 Задача: Мне нужно выбрать так, чтоб по каждому контрагенту было выбрано единственное и последнее значение регистра по отбору и периоду. Срез последних не подходит, так как "ИсторияИзменеиняКонтрагентов.Объект" может иметь различные строковые значения. Очень важно, что параметр массив, так как это часть большого запроса, где этот запрос виртуальная таблица, которую нельзя итожить. Как это сделать? Надеюсь понятно изложил. Заранее спасибо!!!! |
|||
1
DrShad
21.08.12
✎
20:53
|
а где срез последних?
|
|||
2
m-serg74
21.08.12
✎
20:55
|
(1) да стандартный ему скорее всего не подойдет, надо типа самодельного)
ТС делай по аналогии
|
|||
3
m-serg74
21.08.12
✎
20:57
|
лень самому было писать, а вообще все тута, как обычно
www.google.ru/search?q=сделать+срез+последних+1С |
|||
4
Botanik
21.08.12
✎
21:24
|
Спасибо! Все получилось))
Мой запрос: ВЫБРАТЬ РАЗЛИЧНЫЕ ИсторияИзменеиняКонтрагентов_Дионикс.Контрагент, ИсторияИзменеиняКонтрагентов_Дионикс.СтароеЗначение, ИсторияИзменеиняКонтрагентов_Дионикс.ДействеутС ИЗ (ВЫБРАТЬ РАЗЛИЧНЫЕ ИсторияИзменеиняКонтрагентов.Контрагент КАК Контрагент, МАКСИМУМ(ИсторияИзменеиняКонтрагентов.ДействеутС) КАК ДействеутС ИЗ РегистрСведений.ИсторияИзменеиняКонтрагентов_Дионикс КАК ИсторияИзменеиняКонтрагентов ГДЕ ИсторияИзменеиняКонтрагентов.Контрагент В (&Массив) И ИсторияИзменеиняКонтрагентов.Объект = "Наименование" СГРУППИРОВАТЬ ПО ИсторияИзменеиняКонтрагентов.Контрагент) КАК ВложенныйЗапрос ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИсторияИзменеиняКонтрагентов_Дионикс КАК ИсторияИзменеиняКонтрагентов_Дионикс ПО ВложенныйЗапрос.Контрагент = ИсторияИзменеиняКонтрагентов_Дионикс.Контрагент И ВложенныйЗапрос.ДействеутС = ИсторияИзменеиняКонтрагентов_Дионикс.ДействеутС ГДЕ ИсторияИзменеиняКонтрагентов_Дионикс.Контрагент В (&Массив) И ИсторияИзменеиняКонтрагентов_Дионикс.Объект = "Наименование" |
|||
5
m-serg74
21.08.12
✎
21:39
|
фигню какую то налепил))) ну главное что работает, если работает конечно)))
|
|||
6
Botanik
21.08.12
✎
21:42
|
А чё фигню то?
Что посоветовал, то и налепил))))) |
|||
7
Botanik
21.08.12
✎
21:43
|
И главное работает))))
|
|||
8
m-serg74
21.08.12
✎
21:45
|
зачем два ГДЕ? нафига РАЗЛИЧНЫЕ? МАКСИМУМ Период из регистра брать надо, хотя откуда мне знать что там у тебя вообще в регистр пишется)))
|
|||
9
m-serg74
21.08.12
✎
21:46
|
но (7) главное)))
|
|||
10
m-serg74
21.08.12
✎
21:48
|
ДействеутС = ДействУЕтС вообще то в русском языке вроде
|
|||
11
Botanik
21.08.12
✎
21:53
|
Первое "где" для вложенного запроса, по которому делаю группировку по МАКСИМУМ "ДействуетС".
Второе "где" для таблицы, которая присоединяется левым соединением к результату вложенного. Без второго "где" эта таблица больше и дольше выполняется запрос. А Различные, это можно и убрать))) Привычка. ДействеутС - очепятка))) |
|||
12
m-serg74
21.08.12
✎
21:55
|
ЛЕВОЕ соединение это когда из левой таблицы (твой ВложенныйЗапрос, а там уже отбор был) берутся все записи, а из правой только те которые подходят под условие в ПО ....
|
|||
13
m-serg74
21.08.12
✎
22:01
|
думаю вот так:
|
|||
14
Botanik
21.08.12
✎
22:09
|
Но ведь получается, что присоединяешь всю таблицу целиком
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИсторияИзменеиняКонтрагентов_Дионикс КАК ИсторияИзменеиняКонтрагентов_Дионикс Не накладывая на неё отбор она полностью пытается присоединится по полям: ВложенныйЗапрос.Контрагент = ИсторияИзменеиняКонтрагентов_Дионикс. И ВложенныйЗапрос.Объект = ИсторияИзменеиняКонтрагентов_Дионикс.Объект И ВложенныйЗапрос.ДействеутС = ИсторияИзменеиняКонтрагентов_Дионикс.ДействеутС И те значения которые подходят, присоединяются. А с отбором, таблица становится меньше и быстрее. |
|||
15
m-serg74
21.08.12
✎
22:12
|
по отбор на присоединяемую таблицу а вот товой посдедний ГДЕ был не на нее а уже на результат а по сути он вообще ничего не отбирал ибо ЛЕВАЯ таблица так сказать ведущая
|
|||
16
m-serg74
21.08.12
✎
22:13
|
товой посдедний = твой последний
|
|||
17
m-serg74
21.08.12
✎
22:15
|
я конечно же могу ошибаться)))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |