Bonjour à tous,

Je dispose de 3 tables,
Table personnel ( avec ID > id_rhp)
Table rh_personnel_conges_periode (avec ID id_rhpcp)
Table rh_personnel_conges (Avec ID> id_rhpc et ID id_rhp et id_rhpcp)

Dans la table "personnel" il y a la liste des salariés, dans la table "période conges" il y a les periodes de conges :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
id_rhpcp|date_debut_acquis|date_fin_acquis|date_debut_utilisable|date_fin_utilisable|Description
1 	2015-06-01 	2016-05-31 	2016-06-01 	2017-05-31 	Congés acquis en 2015-2016 utilisable en 2016-2017
2 	2016-06-01 	2017-05-31 	2017-06-01 	2018-05-31 	Congés acquis en 2016-2017 utilisable en 2017-2018
3 	2017-06-01 	2018-05-31 	2018-06-01 	2019-05-31 	Congés acquis en 2017 2018 utilisable en 2018-2019
4 	2018-06-01 	2019-05-31 	2019-06-01 	2020-05-31 	Congés acquis en 2018-2019 utilisable en 2019-2020
5 	2019-06-01 	2020-05-31 	2020-06-01 	2021-05-31 	Congés acquis en 2019-2020 utilisable en 2020-2021
6 	2020-06-01 	2021-05-31 	2021-06-01 	2022-05-31 	Congés acquis en 2020-2021 utilisable en 2021-2022
table rh_personnel_conges :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
id_rhp 	debut_conges 	fin_conges 	id_rhptc 	nombre_jour 	id_users 	id_rhpcp 	nbre_samedi
52 	        2017-08-14 	2017-09-03 	1 	18 	                       1 	   2 	            3
Depuis la une page web un salarié fait une demande de congés (date de debut et fin de conges) et il doit indiquer sur quelle compte de conges ("periode conges") on doit lui déduire ces jours.

Je voudrais réaliser une requête qui affiche pour un salarié toutes ces périodes avec les jours congés prises sur ces périodes.

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
 
SELECT description, sum(nombre_jour) as nbrejours,sum(nbre_samedi) as nbresamedi,
date_entree,
case
WHEN YEAR(DATE_SUB(periode_fin_acquis, INTERVAL TO_DAYS(date_entree) DAY)) < '1' then  ((MONTH(periode_fin_acquis)- MONTH(date_entree)))*2.5
WHEN YEAR(DATE_SUB(periode_fin_acquis, INTERVAL TO_DAYS(date_entree) DAY)) < '20' then  30
WHEN YEAR(DATE_SUB(periode_fin_acquis, INTERVAL TO_DAYS(date_entree) DAY)) >= '30' then 33
WHEN YEAR(DATE_SUB(periode_fin_acquis, INTERVAL TO_DAYS(date_entree) DAY)) >= '25' then 32
WHEN YEAR(DATE_SUB(periode_fin_acquis, INTERVAL TO_DAYS(date_entree) DAY)) >= '20' then 31
else '0' end as jour_acquis
FROM rh_personnel_conges_periode rhpcp 
RIGHT JOIN rh_personnel_conges rhpc  on rhpcp.id_rhpcp=rhpc.id_rhpcp
RIGHT JOIN rh_personnel rhp on rhp.id_rhp=rhpc.id_rhp
WHERE rhpc.id_rhp='52'
GROUP BY rhpc.id_rhpcp, description
Dans mon exemple cela n'affiche qu'une ligne car dans la table "rh_personnel_conges" je n'ai qu'une ligne,mais voudrais arriver l'ensemble des "periode de conges" ci-dessous en exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
Description|Date Entrée|Periode fin acquis
Congés acquis en 2015-2016 utilisable en 2016-2017|1984-01-01 	2016-05-31 	null 	33
Congés acquis en 2016-2017 utilisable en 2017-2018|1984-01-01 	2017-05-31 	18 	33
Congés acquis en 2017 2018 utilisable en 2018-2019|1984-01-01 	        2018-05-31 	null 	33
Congés acquis en 2018-2019 utilisable en 2019-2020|1984-01-01 	2019-05-31 	null 	33
Congés acquis en 2019-2020 utilisable en 2020-2021|1984-01-01 	2020-05-31 	null 	33
Congés acquis en 2020-2021 utilisable en 2021-2022|1984-01-01 	2021-05-31 	null 	33
Est-ce réalisable ? Ou bien faut-il passer par plusieurs requêtes

merci d'avance pour vos conseils

guigui69