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
Partager