Вход | Регистрация
 

Какое условие выбрать для соединения таблиц?

Какое условие выбрать для соединения таблиц?
Я
   ДНН
 
04.06.19 - 11:17
Есть 2 таблицы.
В первой 2 колонки: Номенклатура и Серия.
Во второй 4 колонки: Серия, Номер сертификата, Дата начала действия, Дата окончания действия. При этом у одной серии может быть несколько номеров сертификата. Для того чтобы получить последний номер таблица упорядочена по датам окончания и начала действия сертификата.
Теперь нужно связать эти 2 таблицы таким образом, чтобы к первой таблице присоединился только последний номер сертификата. Какое условие указать?
Кстати, это СКД может быть через несколько наборов данных можно это сделать?
Спасибо.
 
 
   RomanYS
 
1 - 04.06.19 - 11:21
Убрать из второй таблицы не актуальные сертификаты
   ДНН
 
2 - 04.06.19 - 11:24
(1) Как? Сертификаты получаются на дату, то есть выбираю все сертификаты, у которым дата начала меньше или равно текущей даты и дата окончания больше или равно текущей. Затем сортирую по датам. Вот пример запроса из типовой КА 1.1

ТекстЗапроса = "
        |ВЫБРАТЬ РАЗРЕШЕННЫЕ
        |    СертификацияНоменклатуры.ДатаСертификата,
        |    СертификацияНоменклатуры.НомерСертификата,
        |    СертификацияНоменклатуры.ДатаНачала,
        |    СертификацияНоменклатуры.ДатаОкончания,
        |    ВЫБОР
        |        КОГДА СертификацияНоменклатуры.ДатаОкончания = &ПустДата
        |            ТОГДА &ДатаМакс
        |        ИНАЧЕ СертификацияНоменклатуры.ДатаОкончания
        |    КОНЕЦ КАК ДатаСортКон,
        |    ВЫБОР
        |        КОГДА СертификацияНоменклатуры.ДатаНачала = &ПустДата
        |            ТОГДА &ДатаМакс
        |        ИНАЧЕ СертификацияНоменклатуры.ДатаНачала
        |    КОНЕЦ КАК ДатаСортНач,
        |    СертификацияНоменклатуры.Регистратор КАК Регистратор,
        |    СертификацияНоменклатуры.Период КАК Период
        |ИЗ
        |    РегистрСведений.СертификацияНоменклатуры КАК СертификацияНоменклатуры
        |ГДЕ
        |    (СертификацияНоменклатуры.ДатаНачала <= &КонДата
        |            ИЛИ СертификацияНоменклатуры.ДатаНачала = &ПустДата)
        |    И (СертификацияНоменклатуры.ДатаОкончания >= &КонДата
        |            ИЛИ СертификацияНоменклатуры.ДатаОкончания = &ПустДата)
        |    И СертификацияНоменклатуры.СерияНоменклатуры = &Серия
        |    И СертификацияНоменклатуры.ВидСертификата = &ВидСертификата
        |    И СертификацияНоменклатуры.СостояниеСертификации = &Состояние
        |
        |УПОРЯДОЧИТЬ ПО
        |    ДатаСортКон УБЫВ,
        |    ДатаСортНач УБЫВ";
   mistеr
 
3 - 04.06.19 - 11:24
(0) Это фактически срез последних. Схема:

1) для каждой серии выбрать последнюю дату сретификата;
2) получить всю строку с серитфикатом по этой дате;
3) соединить с первой таблицей.
   bootini
 
4 - 04.06.19 - 11:24
Максимум (ДатаСертификата)
   ДНН
 
5 - 04.06.19 - 11:24
Но там для одной серии, а я хочу запросом сразу для всех серий
   mistеr
 
6 - 04.06.19 - 11:31
(5) Что мешает?

  ГДЕ Серия В (ВЫБРАТЬ Серия ИЗ Таблица1)
   catena
 
7 - 04.06.19 - 11:31
(5)Запросом для всех серий 
1) для каждой серии выбрать последнюю дату сретификата;
2) получить всю строку с серитфикатом по этой дате;
3) соединить с первой таблицей.
   RomanYS
 
8 - 04.06.19 - 11:32
(2) Регистр СертификацияНоменклатуры в УПП/КА1 периодический - можно просто взять срез
   ДНН
 
9 - 04.06.19 - 12:33
(7) спасибо, так и сделал

Список тем форума
Рекламное место пустует  Рекламное место пустует
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Э. Йодан
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.