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 :
table rh_personnel_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
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.
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
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.
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
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
Est-ce réalisable ? Ou bien faut-il passer par plusieurs requêtes
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
merci d'avance pour vos conseils
guigui69
Partager