Я имею дело с проблемой, с которой просто не могу справиться.Допустим, я получаю результаты с помощью простого запроса MySQL Select:
SELECT date_from.rights, date_to.rights FROM rights
В таблице rights
хранятся записи, описывающие права пользователей системы, к которым им необходим доступ.
Разрешенияограничены значениями времени, очевидно, ОТ и ДО.Если date_from
или date_to
равно NULL, разрешение не ограничено (по времени).
Права таблицы содержат следующие данные:
date_from.,,,,,,,,date_to
2011-05-20.,,,,,,,,2011-08-20 2011-06-20.,,,,,,,,NULL 2011-03-20.,,,,,,,,2011-04-20НОЛЬ .. .,,,,,,,,,,,2011-01-20
Что мне действительно нужно получить с помощью запроса SELECT:
date_from.,,,,,,,,date_to
2011-05-20.,,,,,,,,NULL 2011-03-20.,,,,,,,,2011-04-20НОЛЬ .. .,,,,,,,,,,,2011-01-20
Надеюсь, вы понимаете, что я имею в виду под всем этим.Мне просто нужно сгруппировать результаты, чтобы получить как можно больший диапазон ограниченных по времени разрешений, где каждое отдельное значение даты пересекается;)
Я думаю, что предложение GROUP BY должно делать свою работу, но я просто могу 'найти правильную формулу.Также я хотел бы избежать процедур, если это возможно.