Bonjour j'ai un gros soucis sur une requête, en fait j'aimerais faire un outil de gestion des collaborateurs d'une société, et qui permettrai de trier les collaborateurs par profils, et par compétences.

Les compétences sont du genre : Java, Access, SQL SERVER etc ...

Je veux faire un tri par exemple, sur tout les gens qui savent faire du access et du java, mais la reqûete ne renvoie pas de résultats, alors que certaines personnes devraient être concernées.

Le principe est relativement simple, dans la table avoir_competences, sont référencés les matricule (identifiant) des collaborateurs, et associé a chaque matricule, on retrouve l'identifiant de la compétence du cv, qui pointe sur la compétence présente dans Est_synonyme.

Dans est_synonyme, on a l'identifiant du générique, qui fait référence a la compétence générique présente Génerique_ref, le nom de la compétence , et son identifiant.

La compétence générique sers à regrouper plusieurs compétences de la table est_synonyme , en une seule, je m'explique, imaginons, je trouve dans plusieurs cv différents access 2000 , access vba 97, access, ms access etc ... je veux regrouper tout sous une entité générique ACCESS, génrique_ref va me permettre de faire cela.

voila la requête que j'essaye de faire :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
SELECT [Etat_civil].matricule,[Etat_civil].NOM_collab,[Etat_civil].Prenom_collab,[profils].statut_mission ,[profils].id_ism3,[profils].id_metier,[profils].id_ra FROM [Etat_civil],[profils],[contrats],Avoir_Competences, Génerique_ref, Est_synonyme
 
WHERE [Etat_civil].matricule = [profils].matricule 
AND [Etat_civil].flag_actif=1 AND [profils].flag_actif=1 
AND [contrats].matricule=Etat_civil.matricule 
AND [contrats].flag_actif=1 
AND Avoir_Competences.matricule = Etat_civil.matricule 
AND Est_synonyme.id_competence_CV = Avoir_Competences.id_competence 
AND Génerique_ref.id_generique = Est_synonyme.id_generique 
AND Est_synonyme.id_generique IN('1','28')
GROUP BY [Etat_civil].matricule,[Etat_civil].NOM_collab,[Etat_civil].Prenom_collab,[profils].statut_mission ,[profils].id_ism3,[profils].id_metier,[profils].id_ra ,Est_synonyme.id_generique 
HAVING COUNT(DISTINCT (Est_synonyme.id_generique)) = 2 ORDER BY NOM_collab
script de jeux de test ici :

http://da.smiffys.free.fr/sqlserver/base_sqlserver.zip