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

52 просмотра

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

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

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

Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Вопрос на перед, на следующую пятницу. Сколько строк кода можно вешать на одного программиста, понятно что если проект хорошо написан то можно и миллион. Но есть же где то пре...
AlekseyK Kluchnikov
31
Немного оффтопа: а кто на чем сидит для осдева в плане ide/редактора? Последнее время сидел на vscode, но я его прям не могу нормально воспринимать, перешел на сlion, но меня...
Evg Resh
29
На чём в основном щас пишут мини апы? Vuejs?
Goot evening Not everyone
6
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
Вопрос: Здравствуйте! У меня возникла проблема с использованием плагина Mall в OctoberCMS. Я использую все файлы и компоненты в их исходном виде, без изменений. Однако на стр...
𐩱𐩪𐩣𐩱𐩲𐩺𐩡
8
Я правильно понимаю что нет способов получить список ожидающих заявок на вступление в группу с помощью бота из mtproto?
Шамиль Прилов
9
А какие существуют способы обработки ошибок выделения памяти в ядре? Т.е., допустим, есть функция, которая возвращает адрес свободной страницы в физической памяти и диапазон в...
disba1ancer
51
Вот объясните, как это работает: Вот есть допустим unix-подобная система, и программа запускает допустим printf или fork, как это передается ядру, и как оно обрабатывать начин...
Егор
14
Карта сайта