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 sur 3 tables - affichage liste - group_concat


Sujet :

Requêtes MySQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 10
    Par défaut Requête sur 3 tables - affichage liste - group_concat
    Bonjour,
    Voici mon problème :
    Je désire afficher mes données de la mannière suivante :

    first_name - expertise_name
    Astérix - Guerrier, Doué pour le combat
    Obélix - Guerrier, Fabrique des ménhirs
    Panoramix - Futé, Fabrique de la potion magique

    Mes données sont réparties sur 3 tables (un "user" peut avoir une ou plusieurs exertises) :
    Table user [user_id, first_name]
    Table expertise [expertise_id, expertise_name]
    Table user_expertise [eser_id, Expertise Id]

    Voici ma requête SQL pour afficher les résultats ci-dessus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT *, GROUP_CONCAT (expertise.name SEPERATOR ",") 
    FROM user 
    LEFT JOIN user_expertise ON user.user_id = user_expertise.user_id 
    LEFT JOIN expertise ON user_expertise.expertise_id = expertise.expertise_id
    Jusque là, pas de problèmes ;-)

    J'aimerais bien limiter ma recherche aux "user" qui ont comme expertise "Guerrier", pour se faire je rajoute donc unce clause WHERE :
    WHERE expertise_name = "Guerrier"

    Le résultat suivant s'affiche :
    Astérix - Guerrier
    Obélix - Guerrier

    Comment faire pour afficher toutes les expertises sans faire une autre requête SQL (voir exemple ci-dessous) ?
    Astérix - Guerrier, Doué pour le combat
    Obélix - Guerrier, Fabrique des ménhirs

    Merci

  2. #2
    Membre émérite 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 : 37
    Localisation : France, Ain (Rhône Alpes)

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

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

    Essayez ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT *, GROUP_CONCAT (expertise.name SEPERATOR ",") 
    FROM (
      SELECT *
      FROM user AS a
      WHERE EXISTS (
        SELECT NULL
        FROM user_expertise AS b
          NATURAL JOIN expertise AS c
        WHERE a.user_id = b.user_id
          AND expertise_name = 'Guerrier' )
    ) AS user
      NATURAL JOIN user_expertise  
      NATURAL JOIN expertise
    Si ça ne va pas, montrez-nous la structure de vos tables au format SQL (CREATE TABLE..) ainsi qu'un jeu d'essais (INSERT INTO...) comme décrit dans les règles du forum SQL:
    http://www.developpez.net/forums/a69...gage-sql-lire/

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 10
    Par défaut
    Merci, cela fonctionne!

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

Discussions similaires

  1. [AC-2003] Requête sur plusieurs tables dans une seule liste
    Par tarnx dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 04/12/2009, 11h36
  2. Problème de requêtes sur deux tables
    Par Pymm dans le forum Access
    Réponses: 6
    Dernier message: 06/09/2005, 09h06
  3. Requête sur plusieurs tables
    Par drinkmilk dans le forum Langage SQL
    Réponses: 8
    Dernier message: 11/07/2005, 12h25
  4. Requête sur 2 tables ?
    Par kibodio dans le forum Langage SQL
    Réponses: 3
    Dernier message: 30/03/2005, 15h57
  5. Requête sur 2 tables et surtout novice...
    Par kibodio dans le forum Langage SQL
    Réponses: 13
    Dernier message: 03/03/2005, 15h45

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