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 :

Aide sur requête


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 365
    Points : 192
    Points
    192
    Par défaut Aide sur requête
    Bonjour,

    Soit le schéma suivant :
    | ----------- | ------------- | --------------------- | ------------ |
    | Schema | Table | Column | Type |
    | ----------- | ------------- | --------------------- | ------------ |

    | Mes_livres | oeuvre | oeuvre_id | INT |

    | Mes_livres | oeuvre | oeuvre_titre | VARCHAR(255)

    | Mes_livres | contributeur | contributeur_id | INT

    | Mes_livres | contributeur | contributeur_nom | VARCHAR(255) |

    | Mes_livres | contributeur | contributeur_prenom | VARCHAR(255) |

    | Mes_livres | contributeur | pseudo | TINYINT(1) *

    | Mes_livres | signer | fk_contributeur_id | INT |

    | Mes_livres | signer | fk_pseudonyme_id | INT

    | Mes_livres | fonction | fonction_id | INT |

    | Mes_livres | fonction | fonction_nom | VARCHAR(255)

    | Mes_livres | participer | fk_contributeur_id | INT |

    | Mes_livres | participer | fk_fonction_id | INT |

    | Mes_livres | participer | fk_oeuvre_id | INT |

    | ----------- | ------------- | --------------------- | ------------ |

    * booléen

    Avec la requête suivante, j'affiche des œuvres avec leurs contributeurs et la fonction de ces derniers :
    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
    17
    18
    19
    20
    21
     
    SELECT o.oeuvre_id, cb.contributeur_id,
     cb.contributeur_nom,cb.contributeur_prenom,
     
    f.fonction_id,f.fonction_nom
     
    FROM oeuvre o
     
    INNER JOIN participer p
     
    ON p.fk_oeuvre_id = o.oeuvre_id
     
    INNER JOIN contributeur cb
     
    ON cb.contributeur_id = p.fk_contributeur_id
     
    INNER JOIN fonction f
     
    ON f.fonction_id = p.fk_fonction_id
     
    ORDER BY f.fonction_nom,cb.contributeur_nom ASC
    La requête n’intègre pas pour l’instant la table "signer". Cette table (issue d'une relation réflexive) contient 2 clés étrangères référençant chacune le champ "contributeur_id" de la table "contributeur". Elle conceptualise la notion de pseudonyme (1 contributeur peut avoir 0, 1 ou plusieurs pseudonymes).

    Par exemple, si ma table "contributeur" contient les données suivantes :

    contributeur_id | contributeur_nom | ...

    1 | Pierre

    2 | Pierre_pseudo 1

    3 | Pierre_pseudo 2

    4 | Jacques

    5 | Paul

    => Ma table "signer" contiendrait les données suivantes (Jacques et Paul n'ayant pas de pseudo) :

    fk_contributeur_id | fk_pseudonyme_id

    1 | 2

    1 | 3

    Je voudrais compléter ma requête pour obtenir l'information complémentaire relative au(x) pseudo(s) éventuellement rattachés à un contributeur. Si je reprends l'exemple précédent, le résultat de la requête serait le suivant :

    o.oeuvre_id | cb.contributeur_id | cb.contributeur_nom | ... | pseudo_nom | ... | pseudo_id

    1 | 1 | Pierre | … | Pierre_pseudo 1 | … | 2

    1 | 1 | Pierre | … | Pierre_pseudo 2 | … | 3

    1 | 4 | Jacques | … | NULL | … | NULL

    1 | 5 | Paul | … | NULL | … | NULL

    Je ne veux donc pas restreindre le résultat aux seuls contributeurs ayant un (ou plusieurs) pseudo(s)
    Est-il possible d’obtenir ce résultat ? Merci.

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Si j'ai bien compris votre problème, il suffit de faire une jointure externe (LEFT OUTER JOIN) sur la table signer.

Discussions similaires

  1. [Exercice] Aide sur requête
    Par Dobyan08 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 09/02/2006, 15h47
  2. Aide sur requêtes
    Par Virgile59 dans le forum Access
    Réponses: 6
    Dernier message: 08/02/2006, 16h05
  3. aide sur requête sql
    Par Vodkha dans le forum Langage SQL
    Réponses: 9
    Dernier message: 30/08/2005, 17h53
  4. Aide sur Requête SQL
    Par devdev dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/05/2005, 12h33
  5. Besoin d'aide sur requête croisée
    Par keawee dans le forum Access
    Réponses: 7
    Dernier message: 18/11/2004, 09h46

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