Пишу выборку и наверное торможу.
Первая таблица - набор от 1 до 1000, например
A=1
A=2
A=3
...
A=999
A=1000
Вторая таблица - набор пар значений, интервалы, например,
A=100 B=150
А=1 В=40
A=300 B=350
Сначала нарисовал поиск чисел из первой таблицы, которых нет во второй (т.е. по полю А) :
SELECT t1.a FROM table1 t1 left join table2 t2 on (t1.a=t2.a) WHERE t2.a IS NULL
Работает!
Теперь ищу числа из первой таблицы, которые не попадают в ИНТЕРВАЛЫ второй таблицы и тут встал... Еще один джойн что ли делать? А в итоге надо найти одно минимальное значение из выборки, т.е. в данном случае это 41.
Ответ
Так?
select min(t1.a) a
from table1 t1
left join (select distinct tt1.a
from table1 tt1
join table2 tt2 on
tt1.a between tt2.a and tt2.b
) tt on t1.a=tt.a
where tt.a is null
Комментариев нет:
Отправить комментарий