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 :

Afficher une valeur provenant d'une table en appellant un code à partir d'1 autre tab


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Afficher une valeur provenant d'une table en appellant un code à partir d'1 autre tab
    Bonjour,
    J'ai un petit problème que je n'arrive pas à résoudre.
    J'ai deux tables glossaire et liens.
    Dans glossaire, j'ai les champs suivants :
    id, code, mot, definition...

    Dans liens, j'ai :
    id, code, lien1, lien2, lien3...

    Code fait la liaison entre les deux tables.
    Chaque mot du glossaire est associé à un code (ex: mot:angoisse / code:ango)
    chaque lien (lien1, lien2...) est défini dans la base sous forme de code.

    A chaque mot du glossaire est associé une definition et des liens (lien1, lien2, lien3...) qui renvoient vers d'autres mots du glossaire.

    Ex: Angoisse - definition blablabla - voir aussi : lien1 (anxi), lien2 (symb)

    Mon problème, c'est que dans ma table liens, lien1, lien2... sont notés sous forme de code mais que je voudrais afficher le mot qui leur correspond dans la table glossaire.

    Ex: Angoisse - définition blablabla - voir aussi : Anxiété (lien1 anxi), symbolisation (lien2 symb)

    J'arrive à récupérer la liste des mots de leur définitions et de leur liens (sous forme de code avec cette requete :

    SELECT glossaire.mot, glossaire.df, liens.lien1, liens.lien2, liens.lien3
    FROM glossaire, liens
    WHERE glossaire.code = liens.code

    Ex.AGRESSIVITÉ / Définition d'agressivité / ango / symb / puls

    Mais je n'arrive pas à faire une requête correcte dans laquelle je pourrai afficher le mot, sa definition, et la liste des mots correspondant au code des liens.

    Je voudrais plutôt afficher ceci :
    Ex.AGRESSIVITÉ / Définition d'agressivité / angoisse (code:ango) / symbolisation (code:symb) / pulsion (code:puls)

    Est-ce qu'un esprit brillant pourrai m'éclairer sur la marche à suivre svp.

    Merci d'avance

  2. #2
    Membre habitué
    Inscrit en
    Septembre 2006
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 142
    Points : 170
    Points
    170
    Par défaut
    Essaye cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT GA.mot, GA.df, GB.mot, GC.mot, GD.mot
    FROM glossaire GA, liens, glossaire GB, glossaire GC, glossaire GD
    WHERE GA.code = liens.code and
              GB.code = liens.lien1 and 
              GC.code = liens.lien2 and 
              GD.code = liens.lien3
    Attention si l'un des champ lienX n'a pas de correspondance alors cela ne ramène pas de ligne
    il faut alors faire des jointure externe (outer join)
    DBA ORACLE

  3. #3
    Candidat au Club
    Inscrit en
    Septembre 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Désolé Arturius mais ça ne fonctionne pas.
    Les champs gb.mot, gc.mot etc... restent désepéremement vides.

    Partant de ton idée, et en simplifiant considérablement mon code, j'arrive à ceci :
    SELECT ga.mot AS intitul,gb.lien1,gc.mot AS lien
    FROM glossaire ga, liens gb, glossaire gc
    WHERE gb.lien1= gc.code AND ga.id = gb.id
    ORDER BY ga.mot ASC


    Ca fonctionne mais le problème est que je souhaiterais afficher tout les mots du glossaire même s'il n'y a pas de lien1

  4. #4
    Membre habitué
    Inscrit en
    Septembre 2006
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 142
    Points : 170
    Points
    170
    Par défaut
    peut-être que la cela fonctionne mieux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT GA.mot, GA.df, GB.mot, GC.mot, GD.mot
    FROM glossaire GA, liens, glossaire GB, glossaire GC, glossaire GD
    WHERE GA.id = liens.id and
              GB.code = liens.lien1 and 
              GC.code = liens.lien2 and 
              GD.code = liens.lien3
    attention si lien1 lien2 ou lien3 sont vides alors aucune données n'est raménées il faut alors utilisé un outer join en plus
    DBA ORACLE

  5. #5
    Candidat au Club
    Inscrit en
    Septembre 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bon, j'en ai un peu bavé mais ça marche.

    Voilà le code, il y a peut être plus simple mais bon :

    SELECT b.mot AS mot_df, b.intro, b.df, liens.lien1,a.mot AS motl1, liens.lien2,c.mot AS motl2, liens.lien3,d.mot AS motl3, liens.lien4,e.mot AS motl4, liens.lien5,f.mot AS motl5, liens.lien6,g.mot AS motl6
    FROM liens
    LEFT OUTER JOIN glossaire a
    ON a.code =liens.lien1
    JOIN glossaire b ON b.id = liens.id
    LEFT OUTER JOIN glossaire c ON c.code =liens.lien2
    LEFT OUTER JOIN glossaire d ON d.code =liens.lien3
    LEFT OUTER JOIN glossaire e ON e.code =liens.lien4
    LEFT OUTER JOIN glossaire f ON f.code =liens.lien5
    LEFT OUTER JOIN glossaire g ON g.code =liens.lien6
    WHERE b.mot BETWEEN '".$deb."' AND '".$fin."'
    ORDER BY mot_df


    ça m'a pris a peut près 8 jours nonstop en tapant des trucs au hasard sur mon clavier et puis un jour

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/07/2014, 11h30
  2. Réponses: 1
    Dernier message: 02/04/2007, 15h49
  3. récupération d'une valeur provenant d'une popup
    Par boss_gama dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 13/09/2006, 17h45
  4. Afficher la valeur choisie d'une liste déroulante dans une textbox
    Par bouchette63 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 20/06/2006, 14h26
  5. Réponses: 13
    Dernier message: 24/02/2005, 16h45

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