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) |