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 8] Jointure externe multiple et valeurs nulles !!!


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [Oracle 8] Jointure externe multiple et valeurs nulles !!!
    Bonjour,

    Je desespere de trouver une solution "simple" à mon problème :
    Je souhaite faire une triple jointure externe chose que, me semble-t-il, Oracle 8 ne sait pas faire !
    J'ai donc 4 tables dont une possède les clef etrangeres des 3 autres et je souhaite réccupérer toutes les données sans perdre les lignes de ma table principales qui n'ont pas d'equivalent dans les autres tables ou dont la clef etrangere est nulle.

    1° existe-t-il une requête simple pour faire ces 3 demi jointures ?
    2° contrairement aux requêtes "LEFT OUTER JOIN" la demi-jointure (+) me fait perdre les lignes dont la clef etrangère est nulle comment peut-on garder ces lignes ?

    Pour info voici le type de requête SQL2 que je veux coder pour Oracle 8 :

    Select A.nom,B.nom,C.nom,D.nom
    from A
    LEFT OUTER JOIN B ON codeB
    LEFT OUTER JOIN C ON codeC
    LEFT OUTER JOIN D ON codeD

    Merci,
    Cordialement,
    NicoS

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Est-ce que l'exemple suivant répond à ta question ?
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    8i CYRIL> select version from v$instance;
     
    VERSION
    -----------------
    8.1.7.4.0
     
    1 ligne sélectionnée.
     
    8i CYRIL> select *
      2  from dvp
      3  ;
     
             A
    ----------
           120
           256
     
    2 ligne(s) sélectionnée(s).
     
    8i CYRIL> select *
      2  from dvp2;
     
             A          B
    ---------- ----------
           256         33
     
    1 ligne sélectionnée.
     
    8i CYRIL> select *
      2  from dvp3;
     
             B C
    ---------- ----------
            33 33
           125 XXX
     
    2 ligne(s) sélectionnée(s).
     
    8i CYRIL> select *
      2  from dvp, dvp2, dvp3
      3  where dvp.a = dvp2.a(+)
      4  and dvp2.b = dvp3.b(+);
     
             A          A          B          B C
    ---------- ---------- ---------- ---------- ----------
           256        256         33         33 33
           120
     
    2 ligne(s) sélectionnée(s).

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup,

    Mais malheureusement pas !
    Ce que je voudrai faire c'est :

    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
    dvp :               dvp2 :              dvp3 :      
        A      B            A     C             B     D      
    -----  -----        ----- -----         ----- -----      
       A1     B1           A1    C1            B2    D2 
       A2     B2           A3    C3            B4    D4 
     
      1  select * 
      2  from dvp, dvp2, dvp3 
      3  where dvp.a (+)= dvp2.a 
      4    and dvp.b (+)= dvp3.b;    
     
       A        B       C       D 
    -----   -----   -----   -----  
       A1      B1      C1          
       A2      B2              D2
    Mais non seulement la double jointure externe ne marche pas mais en plus les lignes qui ont une cle etrangere nulle pour la jointure externe disparraissent....

    Quelqu'un peut m'aider ?

    Merci,

Discussions similaires

  1. jointures externes multiples
    Par beren.kei dans le forum Langage SQL
    Réponses: 3
    Dernier message: 10/06/2008, 10h07
  2. Jointures externes multiples en SQL ACCESS
    Par philnext dans le forum Langage SQL
    Réponses: 3
    Dernier message: 08/09/2007, 16h53
  3. [ORACLE 9i] jointure externe et autres
    Par bud_gw dans le forum Langage SQL
    Réponses: 1
    Dernier message: 27/09/2006, 16h19
  4. [Oracle 8i] Jointure externe dans les deux sens
    Par Drizzt [Drone38] dans le forum Langage SQL
    Réponses: 7
    Dernier message: 07/09/2006, 15h10
  5. [Oracle 8i] Jointures externes des 2 côtés
    Par yAnSoLo82 dans le forum Oracle
    Réponses: 4
    Dernier message: 23/12/2005, 11h23

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