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 :

Outer join avec condition OR


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 59
    Par défaut Outer join avec condition OR
    Bonjour,

    Je voudrais effectuer une query du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT NVL(A.LABEL,'~')
    FROM TABLE_A A, TABLE_B B
    WHERE A.KEY (+) = B.KEY||'0001' OR
              A.KEY (+)= B.KEY||'0002'
    Je voudrais que ça me retourne tous les records de la TABLE_B avec la clé de la TABLE_A si il y a un match avec les deux conditions.

    S'il y a un match avec les deux conditions le label sera d'office le meme...donc pas de problème à ce niveau la...

    Mais le problème est qu'on ne peut pas utiliser un outer join avec un OR ou IN.

    Y a-t-il une alternative?

    Merci.

  2. #2
    Expert confirmé
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Par défaut
    et en SQL ansi 92 ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT NVL(A.LABEL,'~') 
    FROM TABLE_A A
    RIGHT JOIN  TABLE_B B 
    ON (A.KEY = B.KEY||'0001' OR  A.KEY = B.KEY||'0002')
    mais des concaténations dans des jointures ou des clauses WHERE, ce n'est pas top, ça fait sauter les index et donc la performance.

    Sinon en non ansi 92

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT NVL(A.LABEL,'~') 
    FROM TABLE_A A, TABLE_B B 
    WHERE A.KEY (+) = B.KEY||'0001' 
    union
    SELECT NVL(A.LABEL,'~') 
    FROM TABLE_A A, TABLE_B B 
    WHERE A.KEY (+) =  B.KEY||'0002'
    souvent un UNION est une manière de faire un OR

Discussions similaires

  1. Problème de left outer join avec Ibatis
    Par sarsipius dans le forum JDBC
    Réponses: 1
    Dernier message: 28/02/2008, 14h51
  2. left outer join avec condition
    Par fisto dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 14/08/2007, 08h52
  3. outer join avec access
    Par robocop2776 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 24/07/2007, 15h43
  4. OUTER JOIN avec un OR
    Par Ujitsu dans le forum SQL
    Réponses: 9
    Dernier message: 30/03/2007, 15h29
  5. Réponses: 6
    Dernier message: 06/10/2006, 23h15

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