Bonjour,
je vais vous expliquez mon problème assez complexe :
tous d'abord j'ai une table personnel :

avec le matricule de la personne, nom, prenom, statut (id d'une autre table) centre (id d'une autre table) et fonction (id d'une autre table)
ensuite j'ai une table manoeuvres :

avec l'id de la manoeuvre,
le n° de module,
le libelle de la manoeuvre,
le service,
etc.... (moins important)
enfin j'ai ma table pointage qui regroupe les personnes qui on réalise une manoeuvres et la date de réalisation.

pointer_sp est l'id de la personne pointer
pointer_fma est l'id de la manoeuvre pour laquelle il est pointer
et pointer_date correspond à la date du pointage
j'ai crée une requête qui m'affiche le nom des personnes et le nombres de manoeuvres (distincte) qu'ils ont réalisé avec comme condition :
que personnel.pers_centre = 5
et personnel.pers_fonction = 3
la requête fonctionne mais je souhaite ajouter une autre condition qui ne m'afficherais que les manoeuvres de la table pointage pour la quel le service est égal à "EM Formation" ! je ne sais pas ou placer cette condition ???
Voici ma requete :
1 2 3 4 5 6 7 8 9 10 11
| SELECT CONCAT( p.pers_nom, ' ', p.pers_prenom, ' ', g.grd_grade ) AS Nom, COUNT( DISTINCT po.pointer_fma ) AS pourcent
FROM personnels p
JOIN grade g ON g.id_grade = p.pers_grade
LEFT JOIN pointage po ON po.pointer_sp = p.id_pers
CROSS JOIN (
SELECT COUNT( * ) AS nb_manoeuvre
FROM manoeuvres
)m
WHERE p.pers_centre =5
AND p.pers_fonction =3
GROUP BY CONCAT( p.pers_nom, ' ', p.pers_prenom, ' ', g.grd_grade ) , m.nb_manoeuvre |
donc je me demandé si je ne devrais pas rajouter la condition ici :
COUNT( DISTINCT po.pointer_fma WHERE manoeuvres.fma_impose = "EM Formation" )
mais ce n'est pas possible biensur !
merci d'avance pour votre aide
Partager