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

Requêtes MySQL Discussion :

Requète multi-tables relationnelles avec jointure


Sujet :

Requêtes MySQL

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Requète multi-tables relationnelles avec jointure
    Bonjour,
    Je suis actuellement en train de développer une petit application en PHP pour un intranet qui a pour but la gestion de personnel (pour choisir la personne la plus compétente pour un certain type d'intervention).

    Je dispose de 3 Tables

    Table liste_compétence:
    id - compétence
    1 | mécanique
    2 | électricité
    3 | plomberie
    4 | installation

    Table profil:
    id - nom
    1 | Pierre
    2 | Paul
    3 | Marie
    4 | Alex

    Table compétence:
    id - id_profil - compétence
    1 | 1 | mécanique
    2 | 1 | électricité
    3 | 2 | plomberie
    4 | 3 | installation
    5 | 3 | mécanique

    Je cherche à connaitre le nom de la personne correspondant à une ou toutes les compétences sélectionnées

    ex:
    mécanique & électricité = Pierre
    mécanique = Pierre & Marie
    mécanique & installation = Marie

    J'espère avoir été clair.

    J'ai essayé quelque chose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT  Name 
    FROM  profil as P, compétence as C 
    WHERE P.id = C.id_profil 
    AND C.compétence LIKE 'mécanique' 
    AND C.compétence LIKE 'électricité'   
    GROUP BY Name 
    ORDER BY Name
    J'espérai qu'il me sorte Pierre.

    Merci d'avance pour vos réponses.

  2. #2
    Membre éprouvé Avatar de Oishiiii
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2009
    Messages : 508
    Points : 1 107
    Points
    1 107
    Par défaut
    Bonjour,

    Avant tout, vous devriez revoir la structure de la table compétence.
    Tout comme la colonne id_profil, vous devriez avoir une colonne faisant référence à la clé primaire de la table liste_compétence et ne pas stocker directement le nom des compétence.

    Par exemple (clé primaire soulignées, clé étrangères en italique):
    liste_compétence(id, compétence)
    profil(id, nom)
    compétence(id_profil, id_compétence)

    Pour la requête.
    Si vous cherchez les profils ayant exactement les 2 compétences cherchées, essayez (avec la nouvelle table compétence):
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT nom
    FROM profil
       INNER JOIN competence
          ON profil.id = id_profil
       INNER JOIN liste_competence
          ON liste_competence.id = id_competence
    WHERE competence IN ('électricité', 'mécanique')
    GROUP BY profil.id
    HAVING Count(*) = 2

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Je vous remercie beaucoup, je vais essayer ça de suite.

Discussions similaires

  1. [MySQL] Requête multi tables avec Match et Against
    Par laipreu dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 15/12/2011, 15h20
  2. Requête multi tables Jointures et agrégations
    Par Al3x dans le forum Requêtes
    Réponses: 2
    Dernier message: 11/05/2010, 17h56
  3. Requête multi-table avec même condition
    Par ShortcutZ dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/03/2008, 19h14
  4. Requête multi-tables avec BDE
    Par Ptit_bouchon dans le forum Bases de données
    Réponses: 9
    Dernier message: 03/01/2008, 12h58
  5. problème de requête multi-table
    Par dergips dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 23/07/2007, 18h21

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