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 :

[Oracle 8i] Jointure externe dans les deux sens


Sujet :

Langage SQL

  1. #1
    Membre émérite Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Points : 2 453
    Points
    2 453
    Par défaut [Oracle 8i] Jointure externe dans les deux sens
    Bonjour,

    Mon titre est certainement très mal posé, mais ça montre bien que je maitrise pas du tout les jointure.
    Voila ma requete:

    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
     
    INSERT INTO TEMP
                     ( TChamp1,
    	      TChamp2	,
                       Champ1        ,
                       Champ2     ,
                      )
    SELECT  	             
                VL.TChamp,
                VE.TChamp ,
                VL.Champ,
                VE.Champ ,
     
    FROM        
                   TEMP1 VE,
                   TEMP1 VL
    WHERE
               VE.TChamp        (+)= 'Valeur1' 
               VL.TChamp        (+)= 'Valeur2' 
               VE.Champ  (+)= VL.Champ

    Voila et je voudrais recuper les lignes ou :
    Champ est égal pour TChamp à valeur1 et valeur2 (jusque la ça va)
    Les lignes ou Champ n'existe que pour TChamp à valeur1 et les lignes ou Champ n'existe que pour TChamp à valeur2

    Or je n'arrive à avoir que les valeurs ou Champ est égal + celle ou Champ n'existe que pour valeur2 (ou valeur1 selon ce que je fait).

    Si quelqu'un à une solution

    Merci.

  2. #2
    Membre émérite Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Points : 2 453
    Points
    2 453
    Par défaut
    Note, j'ai trouvé une solution en faisait une union de deux requetes, mais j'en voudrais une plus efficace si c'est possible.

    Thx

  3. #3
    Membre confirmé Avatar de lper
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    398
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 398
    Points : 641
    Points
    641
    Par défaut
    Bonjour,
    pas évident de comprendre, mais à mon avis, tu as un souci sur les 'and' et les 'or' dans la clause Where du select ?
    Je coderai selon tes explications :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Where  (VE.TChamp 'Valeur1' or VL.Tchamp = 'Valeur2') and
               VE.Champ  (+)= VL.Champ
    [Edit]
    En fait, je comprend pas pourquoi tu ne simplifierais pas la requête selon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Select 
    From TEMP1 VE
    Where  VE.TChamp in ('Valeur1','Valeur2')

  4. #4
    Membre émérite Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Points : 2 453
    Points
    2 453
    Par défaut
    Bonjour, merci mais cela ne convient pas car dans aucun des cas je ne recupere les cas ou Champ n'existe pas pour Valeur1 ou Valeur2

    Ex:

    Table Temp1
    TChamp Champ

    Toto.......1
    Tata.......2
    Tata.......1
    Toto.......3

    Je veux recuperer
    Table Temp
    TChamp1 TChamp2 Champ1 Champ2

    Toto..........Tata.........1.........1
    ................Tata....................2
    Toto.........................3..........

    J'espere que c'est plus clair.

  5. #5
    Membre confirmé Avatar de lper
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    398
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 398
    Points : 641
    Points
    641
    Par défaut
    Oups, ça devient plutôt nébuleux....Plusieurs points :
    - je ne trouve déja pas logique d'avoir deux zones pour stocker une même valeur : champ1 et champ2, pourrais tu optimiser en ne mettant qu'un champs ?
    - dans le 2ème record, pourquoi stocker tata dans tChamp2 et non tChamp1
    - même question dans le 3ème record ?
    - je soupçonne un problème de conception, peux être pourrais tu nous éclairer sur le but de cette table mise à jour ?

  6. #6
    Membre émérite Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Points : 2 453
    Points
    2 453
    Par défaut
    C'est pas vraiment un problème de conception, mais plutot que j'utilise de l'existant pour quelque chose qui est proche mais pas complétement égal.

    Que champ1 et champ2 soient dupliqués cela ne gene pas trop, il faut voir que la c'est simplifié, ce qui est important ce sont les champs3,4,5 ... non mentionnés ici car hors jointure qui eux sont différents.
    Dans le cas ou je travaille effectivement champ1 et 2 sont égaux, mais ce n'est pas le cas de d'autres cas.

    Pour le second record je stocke Tata dans TChamp2 car sémantiquement parlant Tata c'est TChamp2 et pas TChamp1.
    Idem pour le troisieme.

  7. #7
    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
    Si ta base accept le full outer join essaye :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT   VL.TChamp, VE.TChamp , VL.Champ, VE.Champ   
    FROM      TEMP1 VE full outer join TEMP1 VL on VL.TChamp =VE.TChamp

  8. #8
    Membre émérite Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Points : 2 453
    Points
    2 453
    Par défaut
    Voila c'est cela que je cherchait.
    Dommage pour moi je suis en Oracle 8i et c'est seulement à partir de 9i que l'on peut en faire. Je vais donc rester avec mon union.

    Thx.

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

Discussions similaires

  1. lier des cellules dans les deux sens
    Par noisat dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 30/06/2008, 16h42
  2. Jointure externe dans les rapports
    Par jpclabaux dans le forum Designer
    Réponses: 2
    Dernier message: 04/11/2006, 13h28
  3. [SQL] Jointure externe dans "les 2 sens"
    Par Bounty Killer dans le forum Oracle
    Réponses: 3
    Dernier message: 04/05/2006, 10h56
  4. Double HashMap (Parcours dans les deux sens)
    Par Graffity dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 07/02/2006, 11h02
  5. Association navigables dans les deux sens
    Par DarkNagash dans le forum Diagrammes de Classes
    Réponses: 4
    Dernier message: 13/07/2005, 15h11

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