как объединить таблицы не в соответствии с равенством между двумя полями - PullRequest
1 голос
/ 29 марта 2019

У меня проблема с запросом в SQL oracle, и я буду рад узнать, может ли кто-нибудь здесь помочь мне. Итак, у меня есть две таблицы. Один содержит время начала и время окончания чего-либо (в основном, длительное время), а второй содержит также время начала и время окончания чего-то другого (в основном, короткое время). Я хочу соединить вторую таблицу с первой так, чтобы строки из второй таблицы были соединены с первой, когда время во второй содержится в первой. я приведу пример:

первая таблица:

name start end
---- ----- -----
a    10:00 12:00
b    16:00 18:00

второй стол:

name start end
---- ----- -----
c    11:30 11:45
d    16:15 17:45

Итак, требуемая таблица соединит вторую строку во второй таблице со второй в первой и аналогично первым строкам в таблицах.

спасибо!

Ответы [ 4 ]

1 голос
/ 29 марта 2019

Вы можете использовать следующее выражение в предложении 'ON' в вашем соединении.

... ON (table1.start <= table2.start AND table1.end> = table2.end).

1 голос
/ 29 марта 2019

Если предположить, что ваши временные интервалы в таблице1 не перекрываются,

Select *
From Table1 a
INNER JOIN Table2 b 
on b.start between a.start and a.end
1 голос
/ 29 марта 2019

попробуйте как ниже

select t1.*,t2.* from table1 t1 join table2 t2
on t1.start<=t2.start and t1.end>=t2.end
0 голосов
/ 29 марта 2019

Если я правильно понял, диапазон строк во второй таблице должен быть полностью включен:

      SELECT *
        FROM Table_A A
  INNER JOIN Table_B B
          ON B.start BETWEEN A.start AND a.end
         AND B.end   BETWEEN A.start AND a.end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...