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 :

Plusieurs jointures dans un select


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Plusieurs jointures dans un select
    bonjour,
    j'ai un souci pour construire une requête sur un problème assez trivial :

    pour simplifier j'ai deux tables, une décrivant la composition d'équipes et l'autre stockant les informations des membres
    1) table des équipes
    -id_equipe
    -nom_equipe
    -id_membre1
    -id_membre2
    -id_membre3

    2) table des membres
    -id_membre
    -nom
    -prenom

    je voudrais récupérer à l'aide d'un select la liste des équipes dans laquelle l'id des membres est remplacé par leur nom. auriez vous une idée ?

    merci !

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Il suffit de faire trois jointures sur la table "membre" avec des alias différents.
    Comme j'imagine qu'une équipe n'a pas forcément 3 membres, il faut passer par des jointures externes.

    Tatayo.

  3. #3
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2017
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Avril 2017
    Messages : 502
    Points : 770
    Points
    770
    Par défaut
    Bonjour, commence par proposer quelque chose et on t'orientera. Code SQL et code d'erreur.

    Cordialement.

  4. #4
    Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par tatayo Voir le message
    Il suffit de faire trois jointures sur la table "membre" avec des alias différents.
    Comme j'imagine qu'une équipe n'a pas forcément 3 membres, il faut passer par des jointures externes.
    Bonjour,

    merci pour cette réponse ! j'avais déjà commencé à regarder cette piste avec une requête du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT nom_equipe, id_member1,nom AS nom_member1 FROM
    	(SELECT
    		nom_equipe, id_member1, nom
    	FROM
    		equipes OUTER JOIN membres on id_member1=id_membre) AS table_membres
    le problème, c'est que je ne comprends pas comment étendre ce SELECT aux colonnes id_member2, id_member3, id_member4

  5. #5
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2017
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Avril 2017
    Messages : 502
    Points : 770
    Points
    770
    Par défaut
    Citation Envoyé par yersinia Voir le message
    l'id des membres est remplacé par leur nom.
    Veut dire quoi concrètement ?

    Cordialement.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Inutile de faire de passer par des sous-requêtes. Comme je l'ai indiqué, il faut 3 jointures avec des alias différents:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select t1.col1,t2.col2,t3.col2.t4.col2
    from Matable t1
    left outer join AutreTable t2 on t2.id = t1.id1
    left outer join AutreTable t3 on t3.id = t1.id2
    left outer join AutreTable t4 on t4.id = t1.id3

    Tatayo.

  7. #7
    Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Manequin Voir le message
    Veut dire quoi concrètement ?

    Cordialement.
    en gros, au lieu d'avoir

    équipe 1, 123, 523, 298, 344

    je voudrais :
    équipe 1, dupont, durant, albert, chamard

    la table équipes contient les id des membres, la table membres gère l'association id_membre / nom_membre

    cdt

  8. #8
    Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par tatayo Voir le message
    Inutile de faire de passer par des sous-requêtes. Comme je l'ai indiqué, il faut 3 jointures avec des alias différents:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select t1.col1,t2.col2,t3.col2.t4.col2
    from Matable t1
    left outer join AutreTable t2 on t2.id = t1.id1
    left outer join AutreTable t3 on t3.id = t1.id2
    left outer join AutreTable t4 on t4.id = t1.id3

    Tatayo.
    merci, c'est beaucoup plus clair. je vais tester ça...

    [edit] : ça fonctionne parfaitement, merci beaucoup !

  9. #9
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 134
    Points : 38 557
    Points
    38 557
    Billets dans le blog
    9
    Par défaut
    Votre modèle de données est mal conçu :
    • si le nombre de membres maxi d'une équipe évolue, vous aurez à modifier la table équipe pour ajouter des colonnes membre4, membre5 etc...
    • les équipes qui n'ont que deux membres ont des colonnes inutiles marquées à "null"


    Si un membre n'appartient qu'à une seule équipe, vous devriez avoir les tables suivantes
    Table EQUIPE(EQ_id, EQ_nom)
    Table MEMBRE (MB_id, MB_nom, MB_prenom, EQ_id#)

    Si un membre peut appartenir à plusieurs équipes, alors les tables deviennent
    Table EQUIPE(EQ_id, EQ_nom)
    Table MEMBRE (MB_id, MB_nom, MB_prenom)
    Table INTEGRER(EQ_id, MB_id)

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

Discussions similaires

  1. Plusieurs jointures dans une requête
    Par mouss4rs dans le forum Langage SQL
    Réponses: 10
    Dernier message: 07/09/2011, 15h19
  2. plusieur case dans un select
    Par dirty_harry dans le forum SQL
    Réponses: 2
    Dernier message: 08/01/2010, 12h05
  3. Plusieurs Count dans mon select
    Par thomfort dans le forum Requêtes
    Réponses: 1
    Dernier message: 16/03/2007, 17h39
  4. [Formulaire] Comment permettre de faire plusieurs choix dans un select ?
    Par JackBeauregard dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 29/12/2006, 21h58
  5. Plusieurs jointures dans une requête sql
    Par Pero dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/09/2005, 20h59

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