У меня есть MySQL базы данных, содержащие контракты таблица:MySQL Реализации Порядкового Дата Диапазоны
CREATE TABLE IF NOT EXISTS `contracts` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`employee_id` BIGINT(20) DEFAULT NULL,
`start_date` DATE DEFAULT NULL,
`end_date` DATE DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO `contracts` (`id`,`employee_id`,`start_date`,`end_date`)
VALUES
(1, 555, '2010-01-01', '2012-12-31'),
(2, 666, '2013-01-01', '2013-05-01'),
(3, 666, '2013-05-02', '2013-10-11'),
(4, 777, '2012-01-10', '2013-03-01'),
(5, 777, '2013-03-02', '2014-07-15'),
(6, 777, '2015-01-16', '2015-05-20');
запрашивая у него я получаю один или несколько контракты линий на одного работника
SELECT * FROM contracts
id employee_id start_date end_date
1 555 2010-01-01 2012-12-31
2 666 2013-01-01 2013-05-01
3 666 2013-05-02 2013-10-11
4 777 2012-01-10 2013-03-01
5 777 2013-03-02 2014-07-15
6 777 2015-01-16 2015-05-20
Как запросить таблицу контрактов на группа последовательных диапазонов на одного сотрудника? Я ищу этот выход:
employee_id start_date end_date
555 2010-01-01 2012-12-31
666 2013-01-01 2013-10-11
777 2012-01-10 2014-07-15
777 2015-01-16 2015-05-20
Запись для работника 666 возвратит наименьшую начальную и самую высокую конечную дату, принимая во внимание не существует разрыва между датами контракта.
Запись для работника 777 будет возвращать две строки, поскольку существует разрыв между Индентификационным 5 и 6.
Любых идеями?
Это замечательно. Благодарю. Исправлен ваш ответ, чтобы сделать sql без ошибок. –