72 похожих чатов

Всем привет) Столкнулся с затыком небольшим, мне нужно соединить две

интервальные таблицы примерно таким образом :

Table_1
+----+-------+-----+-----------+
| ID | Begin | End | Condition |
+----+-------+-----+-----------+
| 1 | 1 | 8 | Normal |
| 2 | 8 | 23 | Critical |
| 3 | 23 | 30 | Normal |
+----+-------+-----+-----------+

Table_2
+----+-------+-----+------------+
| ID | Begin | End | Supervisor |
+----+-------+-----+------------+
| 1 | 1 | 14 | John |
| 2 | 14 | 30 | Janice |
+----+-------+-----+------------+

Result_table

+----+-------+-----+-----------+------------+
| ID | Begin | End | Condition | Supervisor |
+----+-------+-----+-----------+------------+
| 1 | 1 | 8 | Normal | John |
| 2 | 8 | 14 | Critical | John |
| 2 | 14 | 23 | Critical | Janice |
| 3 | 23 | 30 | Normal | Janice |
+----+-------+-----+-----------+------------+


Может кто-нибудь подсказать плиз как прописать соединение корректно в таком случае?

7 ответов

22 просмотра

Примерно так Select ... From table1 t1 Join table2 t2 on ...

Будет проще пробовать если выложите таблицы на SQLize.online

1. Гугли про SCD2 и как джойнить исторические таблицы 2. Данные в примере выглядят так, как будто ключ (id) меняется со временем. Если это так, то таблицы в мусор, надо их перепроектировать. Ничего нормально тут не сджойнить 2. Если джойнить по id, то у тебя некорректный результат собран - история будет выглядеть совсем не так, если не протягивать значения из предыдущих периодов вместо null Например, для id = 2 должно быть три строки: 8-14, condition = critical, supervisor = null 14-23, condition = critical, supervisor = Janice 23-30, condition = null, supervisor = Janice 4. В таких таблицах обычно делают актуальный срез - версии с end равным условной бесконечности (null, 100500, 31.12.9999 и т.п)

Nick Nalbantov
1. Гугли про SCD2 и как джойнить исторические табл...

Как бы ни cm join ить, нужно знать чётко сформированное логическое условие, причём, очень желательно, выраженное в виде терма из набора равенств полей, объединённых через логическое И.

Выше тебе ответы

https://sqlize.online/sql/psql15/67ff0d491587e810c6934908dd6a7a19/

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

Обсуждают сегодня

Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
14
Всем привет. Есть кто разбирается в платежках? Что б принимать из других стран и выплачивать рф снг
Musa
6
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
У тебя в конфиге нигде нет deny all; или вообще любого deny?
Alexander Sherbakov
10
Портфолио: Зовут меня Александр, мне 41 год. Город Киров. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github.co...
Magic
11
Приветствую всех, есть вопросик. Передали проект на OctoberCms, без инсталяшки в полуразвернутом виде, нужно было залить бекап бд, после залития бд, оказалось, что части строк...
Лео
14
А как получить доступ к отправленному сообщению в ChosenInlineResult? Раньше кажется можно было, щас убрали?
net
2
Подскажите, пожалуйста, где в backende, или не в нем можно дату поправить? Логирует действия не в том часовом поясе
Лео
7
Есть магистры regex в чате? Задача: нужно написать regex который мэтчит полные (без сокращений по типу ::1/128) ipv6 адреса кроме 2001:0df7:cef7:29f7:52f7:adf7:2cf7:4ff7, при ...
Илья
5
посыпаю голову пеплом =) https://docs.vapor.codes/advanced/files/?h=stream#files
Seryoga
10
Карта сайта