Requête sous Access, mode création ou SQL

Requête sous Access, mode création ou SQL - SQL/NoSQL - Programmation

Marsh Posté le 06-01-2007 à 17:52:05    

Bonjour, je réalise actuellement un prohjet sous Access et je dois imaginer des requêtes.
 
Dans ma base de données, j'ai "EMPLOYES" qui "POSSEDENT" des "SAVOIRS-FAIRE"
 
J'aimerais faire une requête qui me cite les compétences qui ne sont pas détenues par mes employés (afin par exemple de chercher à recruter des profils ayant les compétences manquant à l'entreprise).
 
Mon problème c'est que j'en reviens toujours au même problème: ma requête m'affiche les compétences détenues par mes employés
 
En gros je cherche l'expression "NE PAS" comme contrainte. Quelqu'un pourrait il m'aider?
 
Je vous remercie  :hello:


Message édité par Sachy le 06-01-2007 à 17:53:02
Reply

Marsh Posté le 06-01-2007 à 17:52:05   

Reply

Marsh Posté le 06-01-2007 à 19:21:40    

Tout d'abord, ce serait bien d'avoir une table de toutes les compétences possibles.
Si cette table n'existe pas déjà, elle pourrait être nommée T_savoirfaire, et contenir un champ automatique savoirfaire_id, et son libellé savoirfaire_lib. Il est possible de la remplir rapidement par une requête qui combine un INSERT et un SELECT, par exemple :

INSERT INTO T_savoirfaire (savoirfaire_lib)
SELECT DISTINCT savoirs-faire FROM employes;

Ensuite, la requête SQL pour obtenir les compétences qui ne sont pas détenues par vos employés pourrait être écrite en utilisant NOT IN et une sous-requête, par exemple :

SELECT savoirfaire_lib FROM T_savoirfaire
 WHERE savoirsfaire_lib NOT IN
   (SELECT savoirs-faire FROM employes)


Mais je ne suis pas certain d'avoir bien compris la question. S'il faut une liste des employés et des compétences manquantes pour chaque employé, il faudrait faire presque la même chose :

SELECT e1.employe_nom, s.savoirsfaire_lib
  FROM employes e1, T_savoirfaire s
 WHERE s.savoirsfaire_lib NOT IN
   (SELECT e2.savoirs-faire FROM employes e2  
    WHERE e2.employe_nom = e1.employe_nom)


Reply

Marsh Posté le 06-01-2007 à 19:59:37    

Merci pour votre réponse :)
 

Citation :

Tout d'abord, ce serait bien d'avoir une table de toutes les compétences possibles.


J'ai une TABLE "compétences", contenant une liste générale de compétences.
Et les employés en possèdent certaines mais pas toutes celles de la liste
 
Je te montre ma requête en l'état, à savoir celle qui affiche les compétences détenues par les salariés:
 

Code :
  1. SELECT COMPETENCES.[LIB-COMP], Count([EMPLOYES INTERIMAIRES].[NOM-INT]) AS [CompteDeNOM-INT]
  2. FROM [EMPLOYES INTERIMAIRES] INNER JOIN (COMPETENCES INNER JOIN POSSEDER ON COMPETENCES.N°COMP = POSSEDER.N°COMP) ON [EMPLOYES INTERIMAIRES].N°INT = POSSEDER.N°INT
  3. GROUP BY COMPETENCES.[LIB-COMP]
  4. ORDER BY COMPETENCES.[LIB-COMP];


 
Ca vous aidera sans doute a "voir" comment sont organisées mes données


Message édité par Sachy le 06-01-2007 à 20:06:09
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed