IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Aide pour une requête


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10
    Points : 9
    Points
    9
    Par défaut Aide pour une requête
    Bonjour,


    Je viens de débuter SQL et pour la recherche que j’effectue je développe une base de donnée avec MySQL. Les tables actuellement sont les suivantes :
    Travaux : idtravaux, ...
    Compétence : idcompetence, nomcompetence
    Typeemploye : idemploye,…

    Table d’interrelation
    Travcomp : idtravaux, idcompetence (de une à plusieurs lignes en fonction du nombre de compétence exigé par le travail a effectué)
    Typeempcomp : idemploye, idcompetence (de une à plusieurs lignes en fonction du nombre de compétence du type d’employé envisagé)

    J’aimerais faire une requête pour déterminer la liste du typeemploye pour un travail particulier, la liste du typeemploye devra avoir au minimum toutes les compétence (ou plus) pour effectué le travail
    Requête testée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT DISTINCT idemploye
    FROM Typeempcomp 
    WHERE  idcompetence IN 
    (SELECT idcompetence 
    FROM Travcomp 
    WHERE idtravaux =1)
    Est-ce possible de réaliser ce genre de requête avec la structure de table crées ou bien dois-je revoir la structure de mes tables ?

    En vous remerciant d’avance pour votre aide

  2. #2
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    La encore, je pense qu'il vous faudra passer par des fonction d'aggrégat (count + having).

    genre :

    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
    16
    SELECT 
    	a.idemploye
    FROM	
    	Typeempcom a INNER JOIN Travcomp b on (a.idcompetence=b.idcompetence)
    WHERE
    	b.id_travaux=1	
    GROUP BY 
    	a.idemploye, b.idtravaux
    HAVING
    	COUNT(1)  = ( /* Nbre de compétences acquises pour le travail demandé*/
    SELECT                  
    			COUNT(1) /* Nbre de competences obligatoires*/
    		     FROM	
    			Travcomp
    		     WHERE
    			idtravaux=1)
    a tester et a adapter
    Bon courage

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Merci beaucoup pour l'astuce en adaptant un tout petit peu ça donne ce qu'il me faut voici le code final

    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
    16
    SELECT 
    	a.idemploye
    FROM	
    	Typeempcom a INNER JOIN Travcomp b on (a.idcompetence=b.idcompetence)
    WHERE
    	b.id_travaux=1	
    GROUP BY 
    	a.idemploye
    HAVING
    	COUNT(idemploye)  = ( 
    SELECT                  
    			COUNT(idcompetence) 
    		     FROM	
    			Travcomp
    		     WHERE
    			idtravaux=1)

  4. #4
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    Tant mieux si cela vous a aidé

    Pensez au bouton

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Aide pour une requête et left join
    Par Lolo19 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 26/08/2005, 09h09
  2. J'ai besoin de votre aide pour une requête
    Par ovdz dans le forum Langage SQL
    Réponses: 6
    Dernier message: 20/05/2005, 12h42
  3. Demande d'aide pour une requête
    Par arkzor dans le forum Requêtes
    Réponses: 3
    Dernier message: 28/12/2004, 03h40
  4. Besoin d'aide pour une Requête SQL ...
    Par Kokito dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/07/2004, 12h56
  5. besoin d'aide pour une requête
    Par Damien69 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 31/03/2004, 16h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo