J'ai une base MySQL contenant table contrats:MySQL Mise en œuvre Date Consécutive Ranges
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');
Interrogation j'obtenir une ou plusieurs lignes de contrat par employé
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
Comment interroger table contrats groupe de plages consécutives par employé? Je cherche cette sortie:
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
record pour l'employé 666 retournerait date de début le plus bas et date de fin le plus élevé en tenant compte il n'y a pas d'écart entre les dates contractuelles.
record pour l'employé 777 retournerait deux lignes car il y a un décalage entre 5 et ID d'enregistrement 6.
Toutes les idées?
C'est parfait. Merci. Vous avez corrigé votre réponse pour que sql fonctionne sans erreur. –