|
Какое условие выбрать для соединения таблиц? | ☑ | ||
---|---|---|---|---|
0
ДНН
04.06.19
✎
11:17
|
Есть 2 таблицы.
В первой 2 колонки: Номенклатура и Серия. Во второй 4 колонки: Серия, Номер сертификата, Дата начала действия, Дата окончания действия. При этом у одной серии может быть несколько номеров сертификата. Для того чтобы получить последний номер таблица упорядочена по датам окончания и начала действия сертификата. Теперь нужно связать эти 2 таблицы таким образом, чтобы к первой таблице присоединился только последний номер сертификата. Какое условие указать? Кстати, это СКД может быть через несколько наборов данных можно это сделать? Спасибо. |
|||
1
RomanYS
04.06.19
✎
11:21
|
Убрать из второй таблицы не актуальные сертификаты
|
|||
2
ДНН
04.06.19
✎
11:24
|
(1) Как? Сертификаты получаются на дату, то есть выбираю все сертификаты, у которым дата начала меньше или равно текущей даты и дата окончания больше или равно текущей. Затем сортирую по датам. Вот пример запроса из типовой КА 1.1
ТекстЗапроса = " |ВЫБРАТЬ РАЗРЕШЕННЫЕ | СертификацияНоменклатуры.ДатаСертификата, | СертификацияНоменклатуры.НомерСертификата, | СертификацияНоменклатуры.ДатаНачала, | СертификацияНоменклатуры.ДатаОкончания, | ВЫБОР | КОГДА СертификацияНоменклатуры.ДатаОкончания = &ПустДата | ТОГДА &ДатаМакс | ИНАЧЕ СертификацияНоменклатуры.ДатаОкончания | КОНЕЦ КАК ДатаСортКон, | ВЫБОР | КОГДА СертификацияНоменклатуры.ДатаНачала = &ПустДата | ТОГДА &ДатаМакс | ИНАЧЕ СертификацияНоменклатуры.ДатаНачала | КОНЕЦ КАК ДатаСортНач, | СертификацияНоменклатуры.Регистратор КАК Регистратор, | СертификацияНоменклатуры.Период КАК Период |ИЗ | РегистрСведений.СертификацияНоменклатуры КАК СертификацияНоменклатуры |ГДЕ | (СертификацияНоменклатуры.ДатаНачала <= &КонДата | ИЛИ СертификацияНоменклатуры.ДатаНачала = &ПустДата) | И (СертификацияНоменклатуры.ДатаОкончания >= &КонДата | ИЛИ СертификацияНоменклатуры.ДатаОкончания = &ПустДата) | И СертификацияНоменклатуры.СерияНоменклатуры = &Серия | И СертификацияНоменклатуры.ВидСертификата = &ВидСертификата | И СертификацияНоменклатуры.СостояниеСертификации = &Состояние | |УПОРЯДОЧИТЬ ПО | ДатаСортКон УБЫВ, | ДатаСортНач УБЫВ"; |
|||
3
mistеr
04.06.19
✎
11:24
|
(0) Это фактически срез последних. Схема:
1) для каждой серии выбрать последнюю дату сретификата; 2) получить всю строку с серитфикатом по этой дате; 3) соединить с первой таблицей. |
|||
4
bootini
04.06.19
✎
11:24
|
Максимум (ДатаСертификата)
|
|||
5
ДНН
04.06.19
✎
11:24
|
Но там для одной серии, а я хочу запросом сразу для всех серий
|
|||
6
mistеr
04.06.19
✎
11:31
|
(5) Что мешает?
ГДЕ Серия В (ВЫБРАТЬ Серия ИЗ Таблица1) |
|||
7
catena
04.06.19
✎
11:31
|
(5)Запросом для всех серий
1) для каждой серии выбрать последнюю дату сретификата; 2) получить всю строку с серитфикатом по этой дате; 3) соединить с первой таблицей. |
|||
8
RomanYS
04.06.19
✎
11:32
|
(2) Регистр СертификацияНоменклатуры в УПП/КА1 периодический - можно просто взять срез
|
|||
9
ДНН
04.06.19
✎
12:33
|
(7) спасибо, так и сделал
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |