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

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

Какое условие выбрать для соединения таблиц?
Я
   ДНН
 
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 или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.