Сложный запрос mysql с переменными условиями
Эй ребята,
Фон
Я работаю над тем, чтобы сделать одну из наших баз данных намного более эффективной. Самая большая таблица имеет 3 строки с некоторыми текстовыми столбцами, содержащими одно из двух значений >_ & lt;
Поэтому я вынул текст, выполнил некоторые шаги нормализации и де-нормализации, добавил множество индексов там, где это требовалось, и это сделало его примерно на 3K% -6K% более эффективным. ВУТ. "Быстро довольно" больше не является неправильным термином, боссы все впечатлены, клиенты очень довольны и т. д...
Так что теперь они хотят, чтобы я сделал еще один шаг".;
Во всяком случае, достаточно предыстории. Вот в чем проблема
Проблема
Все наши продукты имеют линейку EAC (fromcon и tocon). Основываясь на нескольких других критериях, мне нужно найти, где они перекрываются или смежны, чтобы я мог уменьшить общее количество записей.
То Есть:
TableId, FromCon, ToCon, OtherCrieria 1 , 0 , 100 , 1 2 , 101 , 200 , 1 3 , 200 , 400 , 1 4 , 401 , 600 , 2 5 , 601 , 800 , 1
Таким образом, выше есть первые три строки, которые смежны или перекрываются с теми же критериями, другая строка, которая смежна, но критерии не совпадают, и последняя строка с соответствующими критериями, но диапазон не смежен с другими совпадениями. Результаты должны выглядеть следующим образом:
TableId, FromCon, ToCon, OtherCrieria 1 (min), 0 , 400 , 1 4 , 401 , 600 , 2 5 , 601 , 800 , 1
Так как же я мог сделать что-то подобное?
Спасибо
Энди
Что я уже пробовал:
Даже не знаю с чего начать так что вот некоторые тестовые данные вместо этого
select * from ( select 1 as id, 0 as fromcon, 100 as tocon, 1 as conditions union select 2, 101, 200, 1 union select 3, 200, 400, 1 union select 4, 401, 600, 2 union select 5, 601, 800, 1 union select 6, 100, 200, 3 union select 7, 200, 400, 4 union select 8, 75, 150, 3 union select 9, 50, 350, 3 ) as test