Как проверять, считают ли два интервала данных элементы разделенными?

Дни назад я увидел вопрос, который между другими вещами подразумевал проблему, сходную с тем, которого я буду выдвигать, он хотел сделать это более общей формой, из-за которой я понимаю, что довольно выдвинутое решение могло бы служить как ссылка на похожие проблемы. Возможно для каких-то из Вас ответ был тривиален или очевиден, но в моем случае только что, когда ее будет жевать достаточно, я нашел (по крайней мере я это думаю), что он был проще, чем он думал. Я это выдвигаю в Sql, но это мог бы быть больше алгоритмов, тема состоит в том, что он мне показался более практическим, чтобы мочь testear решения.

Давайте предполагать следующий пример:

CREATE TABLE A (
    NRO_DESDE INT,
    NRO_HASTA INT
    )

CREATE TABLE B (
    NRO_DESDE INT,
    NRO_HASTA INT
    )

INSERT INTO A (NRO_DESDE, NRO_HASTA)
VALUES (5, 8)

INSERT INTO B (NRO_DESDE, NRO_HASTA)
VALUES (1, 2), (4, 5), (5, 8), (6, 7), (7, 9), (4, 10), (9, 11)

SELECT NRO_DESDE, NRO_HASTA FROM A;
SELECT NRO_DESDE, NRO_HASTA FROM B;

Таблица A у него есть единственная стоимость:

NRO_DESDE NRO_HASTA
========= =========
5         8

Таблица B

NRO_DESDE NRO_HASTA
========= =========
1         2
4         5
5         8
6         7
7         9
4         10
9         11

Таблица A и B они представляют наборы интервалов, но тех, что мы не считаем со всей стоимостью но мы знаем первый и последний элемент каждого набора, идея состоит в том, чтобы сравнивать единственный набор в A со всеми теми B и определять, если они имеют какой-то элемент. Подобно примеру реестр B (4, 5) имей 5 с A, (1, 2) он не имеет никакого элемента, (7, 9) они имеют 7, 8. Результат был бы тогда реестрами B у которого есть элементы, имеемые с теми A, это не важное знание, которые, одинокий знать, что они есть, также мы можем понимать, что количество элементов в каждом наборе относительно управляемое. Не беспокойтесь об отсутствии первичных ключей это просто концептуальный пример.

Заметь: Код вооружен в SQL Server, но он мог бы быть решенным в любом "вкусе" SQL.

16
задан 03.08.2017, 05:55
0 ответов