sur sqliddle.com j'ai http://www.sqlfiddle.com/#!9/83d1a4/5
il y a une partie qui n'apparait pas sur le tableau résultat je ne sais pas pourquoi .
je vous envoie le code

je veux récupérer le résultat après la fusion de plusieurs tables le code est le suivant

création des tables

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CREATE TABLE `tauxcotisation` (
`date_debut` date NOT NULL,
`date_fin` date NOT NULL,
`tauxsal` decimal(6,3) NOT NULL,
`tauxemp` decimal(6,3) NOT NULL
);
 
INSERT INTO `tauxcotisation` (`date_debut`, `date_fin`, `tauxsal`, `tauxemp`) VALUES
('1961-01-01', '1966-06-30', 0.34, 0.34),
('1966-07-01', '1972-06-30', 0.15, 0.34),
('1972-07-01', '1972-09-30', 0.17, 0.34),
('1972-10-01', '1973-06-30', 0.17, 0.34),
('1973-07-01', '1980-02-29', 0.17, 0.34),
('1980-03-01', '1989-06-30', 0.17, 0.34),
('1989-07-01', '1995-12-31', 0.17, 0.34),
('1996-01-01', '2001-12-31', 0.41, 0.34),
('2002-01-01', '2010-01-01', 0.17, 0.34),
('2010-01-02', '2050-01-01', 0.17, 0.34);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CREATE TABLE `carriere` (
`matricule` varchar(20) NOT NULL,
`employeur` varchar(20) NOT NULL,
`corps` varchar(20) NOT NULL,
`grade` varchar(20) NOT NULL,
`start_sal` date NOT NULL,
`end_sal` date NOT NULL,
`sal_base` decimal(9,3) NOT NULL
);
 
INSERT INTO `carriere` (`matricule`, `employeur`, `corps`,`grade`, `start_sal`, `end_sal`, `sal_base`) VALUES
('994320', 'DBGT','Enseignant', 'Hierarchie A','1992-09-21', '2005-08-12', 4500),
('994320', 'CAMRAIL','Fonctionnaire', 'Hierarchie B','2005-08-13', '2009-09-16', 4900),
('994320', 'CCM','Universitaire', 'Autre','2009-09-17', '2019-07-12', 5300),
('994321', 'DBPNT','Enseignant', 'Hierarchie A','2002-09-21', '2005-08-12', 4500),
('994321', 'CAMRAIL','Fonctionnaire', 'Hierarchie B','2005-08-13', '2009-09-16', 4900),
('994322', 'DOUALPORT','Universitaire', 'Autre','2009-09-17', '2019-07-12', 5300);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
CREATE TABLE `augmentation` (
`St_date` date NOT NULL,
`Ed_date` date NOT NULL,
`grade` varchar(20) NOT NULL,
`Montant` decimal(9,3) NOT NULL
);
 
INSERT INTO `augmentation` (`St_date`, `Ed_date`,`grade`, `Montant`) VALUES
('1991-01-21', '2002-09-20','Hierarchie A', 201),
('1991-01-21', '2002-09-20','Hierarchie A', 201),
('2002-09-21', '2006-07-11','Hierarchie A', 200),
('2006-07-12', '2019-09-22','Hierarchie A', 210),
('1991-01-21', '2002-09-20','Hierarchie B', 201),
('1991-01-21', '2002-09-20','Hierarchie B', 201),
('2002-09-21', '2006-07-11','Hierarchie B', 200),
('2006-07-12', '2019-09-22','Hierarchie B', 210),
('1991-01-21', '2002-09-20','Autre', 201),
('1991-01-21', '2002-09-20','Autre', 201),
('2002-09-21', '2006-07-11','Autre', 200),
('2006-07-12', '2019-09-22','Autre', 210)
 
;

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
CREATE TABLE `rubrique` (
`deb` date NOT NULL,
`fin` date NOT NULL,
`lblrubrique` varchar(20) NOT NULL,
`corps` varchar(20) NOT NULL,
`tauxrubrique` decimal(6,3) NOT NULL
);
 
INSERT INTO `rubrique` (`deb`, `fin`, `lblrubrique`, `corps`, `tauxrubrique`) VALUES
('1991-01-01','3002/01/01' ,'css', 'Fonctionnaire', 0.20 ),
('2002/01/01','3002/01/01' , 'ir', 'Fonctionnaire', 0.14 ),
('1991/01/01','3002/01/01' ,'css', 'Enseignant', 0.20 ),
('2002/01/01','3002/01/01' , 'ir', 'Enseignant', 0.14 ),
('1900/06/30', '1989/12/31', 'ie', 'Enseignant', 0.20 ),
('1990/01/01', '2003/09/30', 'ie', 'Enseignant', 0.30),
('2003/10/01', '2005/09/30', 'ie', 'Enseignant', 0.35 ),
('2005/10/01', '2006/09/30', 'ie', 'Enseignant', 0.38),
('2006/10/01', '2007/09/30', 'ie', 'Enseignant', 0.41 ),
('2007/10/01', '2008/09/30', 'ie', 'Enseignant', 0.44 ),
('2008/10/01', '2009/09/30', 'ie', 'Enseignant', 0.47 ),
('2009/10/01', '3009/10/01', 'ie', 'Enseignant', 0.50 ),
('2002/01/01','3002/01/01' ,'css', 'Universitaire', 0.20 ),
('2002/01/01','3002/01/01' , 'ir', 'Universitaire', 0.14 ),
('1900/06/30', '1989/12/31', 'ie', 'Universitaire', 0.20 ),
('1990/01/01', '2003/09/30', 'ie', 'Universitaire', 0.30 ),
('2003/10/01', '2005/09/30', 'ie', 'Universitaire', 0.35 ),
('2005/10/01', '2006/09/30', 'ie', 'Universitaire', 0.38 ),
('2006/10/01', '2007/09/30', 'ie', 'Universitaire', 0.41 ),
('2007/10/01', '2008/09/30', 'ie', 'Universitaire', 0.44 ),
('2008/10/01', '2009/09/30', 'ie', 'Universitaire', 0.47 ),
('2009/10/01', '3009/10/01', 'ie', 'Universitaire', 0.50 ),
('2005/01/01', '2020-10-09', 'irf', 'Universitaire', 1.05);
+++++++++++++++++++++++++++++++++++++++++++++++

requête pour récupérer les données de la fusion


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
SELECT
greatest(begin_date1,deb) AS begin_date2,
least(end_date1,fin) AS end_date2,
sal_base,
tauxsal,
tauxemp,
Montant,
lblrubrique,
corps
FROM rubrique,
 
((SELECT
greatest(begin_date,St_date) AS begin_date1,
least(end_date,Ed_date) AS end_date1,
sal_base,
tauxsal,
tauxemp,
grade,
Montant
FROM augmentation,
(
SELECT
greatest(start_sal,date_debut) AS begin_date,
least(end_sal,date_fin) AS end_date,
sal_base,
tauxsal,
tauxemp
FROM tauxcotisation, carriere
WHERE ((start_sal >= date_debut AND start_sal <= date_fin )
OR (end_sal >= date_debut AND end_sal <= date_fin ))
AND matricule = '994320' AND (start_sal = '1992-09-21' AND end_sal = '2005-08-12')
 
 
 
)as tab
WHERE ( begin_date >= St_date AND begin_date <= Ed_date)
OR ( end_date >= St_date AND end_date <= Ed_date))as tab1)
 
WHERE (( begin_date1 >= deb AND begin_date1 <= fin)
OR ( end_date1 >= deb AND end_date1 <= fin))
AND corps = 'Enseignant'
AND grade = 'Hierarchie A'
;

++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Problème

Entre le 1996-01-01 et 2001-12-31 il n y'a aucune donnée.

sur sqlfiddle http://www.sqlfiddle.com/#!9/83d1a4/5
pouvez vous m'aider s'il vous plait?
Merci