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 :

[ jointure externe ] j'y pompe rien


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2003
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 49
    Points : 32
    Points
    32
    Par défaut [ jointure externe ] j'y pompe rien
    salut,

    voilà mon problème : dans une table j'ai des domaines et dans l'autre des modérateurs. entre les deux j'ai une table moderateur_has_domaine qui me permet de dire quels moderateurs modèrent un domaine et quels sont les domaines surveillés par un modérateur. j'arrive a lister mes domaines avec pour chacun d'eux leurs modérateurs associés. seuleument je veux aussi pouvoir ramener le nom d'un domaine qui n'a pas encore de modérateur (pas d'entrée dans la table moderateur_has_domaine).

    j'pense qu'il faut utiliser une jointure externe ou chépakoi mais j'y comprend vraiment rien! quelqu'un peut-il m'expliquer dans quel sens faire la jointure si je veux ramener les domaines qui n'apparaissent pas dans moderateur_has_domaine???

    voilà la tête de mes tables :
    moderateur_has_domaine : moderateur_moderId | domaine_domaineId
    moderateur : moderId | moderName ...
    domaine : domaineId | domaineName ...

    voilà la requete qui marche... presque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select dom.*, moderid, modertitre, modername, moderemail
    from moderateur, domaine dom, moderateur_has_domaine
    where moderateur_moderid = moderId
    and domaine_domaineid = domaineid;
    merci beaucoup
    a +

  2. #2
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 109
    Points : 111
    Points
    111
    Par défaut
    si j'ai bien tout compris voici la requete que je te propose qui ramene tous les domaines (y comprisceux non modérés) et s'ils existent, les moderateurs...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select dom.*, moderid, modertitre, modername, moderemail 
    from domaine dom 
    LEFT JOIN moderateur_has_domaine ON dom.domaineid=moderateur_has_domaine.domaineid
    INNER JOIN moderateur ON moderateur.moderid = moderateur_has_domaine.moderId;
    la jointure LEFT JOIN indique que tu ramene tous les enregistrement de la table gauche(domaine) même ceux qui n'ont pas de correspondance dans moderateur_has_domaine
    Ensuite, la jointure INNER JOIN est une jointure simple qui ramene que les enregistrements de moderateur qui ont une instance dans moderateur_has_domaine...
    j'espere que ça te mettra sur le bon chemin (en tout cas, je suis sure du coup sur la LEFT JOIN mais moins sur l'autre)

    bon courage !

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2003
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 49
    Points : 32
    Points
    32
    Par défaut
    merci, déjà j'pense comprendre comment on utilise les LEFT JOIN maintenant. mais la requete ne fonctionne pas ; enfin je n'obtient toujour pas les domaines qui n'ont pas de modérateur!...

    a+

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mai 2003
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 49
    Points : 32
    Points
    32
    Par défaut
    ok y'a bon. en fait il faut faire une LEFT JOIN dans les deux cas car la seconde jointure fait aussi intervenir la table moderateur_has_domaine (celle qui n'a pas forcément d'entrée...)
    donc ça donne ça comme requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select d.*, moderid, modertitre, modername, moderemail 
    from domaine d 
    LEFT JOIN moderateur_has_domaine mhd ON mhd.domaine_domaineid = d.domaineid
    LEFT JOIN moderateur m ON mhd.moderateur_moderId = m.moderId
    order by domaine_domaineId, moderid

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

Discussions similaires

  1. Jointure externe, qui ne retourne rien.
    Par guitou0 dans le forum SQL
    Réponses: 11
    Dernier message: 30/04/2008, 13h35
  2. [CR9] faire une Jointure externe
    Par coldec dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 28/06/2005, 12h10
  3. Jointure externe compliquée
    Par miniil dans le forum Langage SQL
    Réponses: 9
    Dernier message: 19/02/2004, 09h27
  4. Jointure externe qui ne fonctionne pas
    Par Guizz dans le forum Langage SQL
    Réponses: 3
    Dernier message: 05/02/2004, 12h26
  5. [Interbase] [Triggers] jointure externe
    Par AnestheziE dans le forum InterBase
    Réponses: 9
    Dernier message: 17/11/2003, 16h17

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