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

SQL Oracle Discussion :

Problème jointure des tables


Sujet :

SQL Oracle

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 204
    Par défaut Problème jointure des tables
    Bonjour,
    j'ai un doute sur un ordre sql : en effet j'ai deux tables
    TAB1(Num,Nom,NumX) et TAB2(Num,NumX,LibX) voilà un exemple:

    TAB1:
    Num Nom NumX
    01 Jean 2001
    02 Pierre 2002
    03 Claude 2003

    TAB2:

    Num NumX LibX
    01 2001 Un Train
    02 2002 Un bateau
    03 2001 Un Train
    04 2002 Un bateau
    05 2003 Une Chaise



    Je souhaite avoir ceci en faisant une jointure si possible une autre possibilité
    qui sera rapide dans l'extraction.


    RESULTAT souhaité :

    Jean 2001 Un train
    Pierre 2002 Un bateau
    Claude 2003 Une chaise

    Remarque je ne peux pas apporter des modifications sur les tables.

    J'ai fait cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select m.nom, m.numx, t.libx from TAB1 m Left join TAB2 t ON (m.numx=t.numx) group by m.nom, m.numx, t.libx
    et voilà le résultat :

    Jean 2001 Un train
    Jean 2001 Un train
    Pierre 2002 Un bateau
    Pierre 2002 Un bateau
    Claude 2003 Une chaise

    Or ce n'est pas le résultat souhaité. Pouvez vous m'aider à resoudre ce problème ?
    En vous remerciant d'avance.

  2. #2
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Quel résultat souhaites-tu obtenir si tu as :
    Num NumX LibX
    01 2001 Un Train
    02 2002 Un bateau
    03 2001 Une voiture
    04 2002 Un bateau
    05 2003 Une Chaise

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 204
    Par défaut
    merci de votre réponse. En fait je souahite avoir ce résultat:
    Jean 2001 Un train
    Pierre 2002 Un bateau
    Claude 2003 Une chaise
    c'est à dire sans doublon !

  4. #4
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Par rapport à l'exemple que je t'ai donné, comment sais-tu qu'il faut prendre le libellé "train" plutôt que le libellé "voiture" ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 204
    Par défaut
    merci de ta réponse mais la réponse que tu donnes ne correspond pas à la table TAB2 qui est :
    Num NumX LibX
    01 2001 Un Train
    02 2002 Un bateau
    03 2001 Un Train
    04 2002 Un bateau
    05 2003 Une Chaise
    le libelle de 2001 est Train, celui de 2002 est bateau enfin celui de 2003 est chaise il n'y a pas voiture dedans. La jointure est faite avec NUmX.
    Et je souhaite ne pas avoir de doublon de 2001 ni de 2002.
    Merci

  6. #6
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    D'après ce que je comprends tu ne peux JAMAIS avoir de libellé différent pour un même NUMX ?
    Dans ce cas il y a un gros problème de conception

    Pour ce qui est de ton problème, il suffit de faire un select distinct.

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 187
    Par défaut solution
    tout simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select DISTINCT m.nom, m.numx, t.libx from TAB1 m Left join TAB2 t ON (m.numx=t.numx)
    P.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 204
    Par défaut
    Bonjour a tous,
    j'ai essayé avec le distinct mais j'ai toujours la même réponse. En fait les tables existent la conception a été fait et j'estime aussi qu'elle a été mal faite mais moi je n'y peux rien je dois faire avec.
    Une solution est possible mais elle coute trop cher en temps.
    C'est de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Select nom, numx from TAB1 
    rs=resultat("numx")
    Lorsqu'on boucle dans les enregistrements on fait un autre select
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select distinct libx from TAB2 where numx=rs
    Dans ce cas ça marche mais c'est très lent .
    Merci de m'aider.

  9. #9
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Citation Envoyé par opeo Voir le message
    j'ai essayé avec le distinct mais j'ai toujours la même réponse.

    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
    22
    23
    SQL> select * from t1;
          NUM NOM                                 NUMX
    --------- ------------------------------ ---------
            1 Jean                                2001
            2 Pierre                              2002
            3 Claude                              2004
     
    SQL> select * from t2;
          NUM      NUMX LIBX
    --------- --------- ------------------------------
            1      2001 Train
            2      2002 Bateau
            3      2001 Train
            4      2002 Bateau
            5      2004 Chaise
    6 rows selected.
     
    SQL> select distinct t1.nom, t2.numx, t2.libx from t1 left join t2 on (t1.numx = t2.numx);
    NOM                                 NUMX LIBX
    ------------------------------ --------- ------------------------------
    Claude                              2004 Chaise
    Jean                                2001 Train
    Pierre                              2002 Bateau

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 204
    Par défaut
    Je vous remercie bien en fait dans libx il y avait les libellés différents exemple train et trains pour le même code.La base est je crois à refaire je leur dis cela tout de suite.
    Encore merci

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

Discussions similaires

  1. Requete sql jointure des tables et regroupement
    Par Abed_H dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 22/02/2009, 10h59
  2. problème avec des tables
    Par Ninie87 dans le forum Requêtes
    Réponses: 5
    Dernier message: 05/09/2008, 12h21
  3. Jointure des tables
    Par bhouria dans le forum BIRT
    Réponses: 6
    Dernier message: 29/04/2008, 10h36
  4. Problème update des tables
    Par PC81 dans le forum VBA Access
    Réponses: 9
    Dernier message: 15/04/2008, 11h10
  5. Problème jointure de tables
    Par Carter dans le forum Requêtes
    Réponses: 1
    Dernier message: 07/02/2006, 12h41

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