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

Oracle Discussion :

Jointure externe avec (+)


Sujet :

Oracle

  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant
    Inscrit en
    Mai 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : Mai 2006
    Messages : 147
    Par défaut Jointure externe avec (+)
    Bonjour ,

    Selon le lien oracle il est précisé que :
    If A and B are joined by multiple join conditions, then you must use the (+) operator in all of these conditions.
    If you do not, then Oracle Database will return only the rows resulting from a simple join, but without a warning or error to advise you that you do not have the results of an outer join.

    J'essaye d'appliquer cela dans la jointure externe suivante :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT T1.*
    FROM TABLE1 T1, TABLE2 T2 
    Where T1.ID = T2.ID(+)  
    and  T1.statut = T2.statut  /* Faut-il rajouter obligatoirement (+) => and T1.statut = T2.statut(+) */
    and T1.NUM = 1000  
    and T2.NUM(+)= 2000 /* Le (+) ici est-il obligatoire ? */
    and T2.ANNE is not null; /* Faut-il rajouter obligatoirement (+) => and T2.ANNE(+) is not null */
    merci

  2. #2
    Membre Expert Avatar de ojo77
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2010
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 680
    Par défaut
    Le + est obligatoire lorsque vous voulez que la table qui n'a pas valeur correspondant à la contrainte la remplace par la valeur null

    Donc

    T1.statut = T2.statut /* Faut-il rajouter obligatoirement (+) = and T1.statut = T2.statut(+) */ => oui si vous voulez que la colonne statut soit complétée par des null s'il n'existe pas la correspondance
    AND T2.NUM(+)= 2000 /* Le (+) ici est-il obligatoire ? */ non
    T2.ANNE IS NOT NULL; /* Faut-il rajouter obligatoirement (+) => and T2.ANNE(+) is not null */ non plus

  3. #3
    Membre Expert

    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    536
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 536
    Par défaut
    Il faut un (+) pour toutes les conditions sur la table T2:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT T1.*
    FROM TABLE1 T1, TABLE2 T2 
    WHERE T1.ID = T2.ID(+)  
    AND  T1.statut = T2.statut(+)
    AND T1.NUM = 1000  
    AND T2.NUM(+)= 2000
    AND T2.ANNE(+) IS NOT NULL;
    Autrement, comment voudriez vous qu'Oracle produise des nulls pour ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE T1.ID = T2.ID(+)
    Et qu'en même temps ces nulls doivent vérifier ceci (par exemple)

    Un null n'est jamais égal à 2000.

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

Discussions similaires

  1. Jointure externe avec constante
    Par magic charly dans le forum SQL
    Réponses: 2
    Dernier message: 02/05/2007, 10h37
  2. Jointure externe avec prédicat dans la clause de jointure
    Par aflp91 dans le forum Langage SQL
    Réponses: 9
    Dernier message: 08/12/2006, 00h23
  3. Pb de jointure externe avec un number
    Par mch_27 dans le forum Oracle
    Réponses: 2
    Dernier message: 07/03/2006, 15h33
  4. [SQL] jointure externe avec 3 tables, comment faire ....
    Par grumbok dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/08/2005, 16h13
  5. jointure externe avec un where, me pose problème!
    Par Danae dans le forum Langage SQL
    Réponses: 3
    Dernier message: 18/07/2005, 17h37

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