@moem

Как извлечь набор данных из двух таблиц с разновременными параметрами?

Здравствуйте.
Подскажите или натолкните на мысль, пожалуйста, кто знает.
Дано:
таблица 1 вида:
datetimeparam1
2018-08-01 12:10red
2018-08-02 15:20green
2018-08-03 08:30blue
таблица 2 вида:
datetimeparam2
2018-08-01 12:15123
2018-08-01 13:20234
2018-08-01 22:30345
2018-08-02 16:10456
2018-08-02 21:15567
Значение параметра 1 меняется единицы раз в сутки. Значение параметра 2 меняется тысячи раз в сутки.
Требуется получить:
datetimeparam2param1
2018-08-01 12:15123red
2018-08-01 13:20234red
2018-08-01 22:30345red
2018-08-02 16:10456green
2018-08-02 21:15567green
Т.е. набор данных со значениями дата-времени и параметра 2 из таблицы 2 и актуальным на этот момент значением параметра 1 из таблицы 1.
Можно ли такое получить одним достаточно быстрым sql запросом?
Спасибо.
  • Вопрос задан
  • 51 просмотр
Пригласить эксперта
Ответы на вопрос 1
@ponaehal
Хм... Для оракла я бы выкрутился так:
SELECT  
t2.datetime
, param2
, (SELECT param1 
  FROM
     (SELECT 
         t1.param1 
      ,  row_number() OVER(ORDER BY t1.datetime DESC)  rankparam1
      FROM table1 t1  
      WHERE t2.datetime>=t1.datetime)  
   WHERE rankparam1 = 1)
  as param1
FROM table2  t2


Полагаю в других база примерно так же.
Но сильно не уверен что это будет достаточно быстро (даже если правильно расставить индексы).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы