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 ответов

57 просмотров

Примерно так 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/

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

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

Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
А в каком формате фреймы? Сам формат сейчас придумываешь, или что-то готовое нужно распарсить?
Okhsunrog
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Карта сайта