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

DB2 Discussion :

Jointure et case


Sujet :

DB2

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 38
    Par défaut Jointure et case
    Bonjour à tous,

    j'aurais besoin de faire une requete faisant une jointure avec des table en fonction d'un certain code.

    exemple :

    Select C1
    From T1
    Case C1
    When 1 then inner join T2
    When 2 then inner join T3....

    Voila l'idée. est-ce possible? Si oui, de quelle maniere?

    Merci d'avance à tous.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    821
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2008
    Messages : 821
    Par défaut
    Il te faut faire un assemblage des lignes entre tes requêtes
    exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Select ....
    From T1 inner join T2
    on t1.cle = T2.cle
    Where C1 = 'A'
     
    union all
     
    Select ....
    From T1 inner join T3
    on t1.cle = T3.cle
    Where C1 = 'B'

  3. #3
    Membre expérimenté
    Inscrit en
    Juin 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Juin 2008
    Messages : 154
    Par défaut
    Tu peux aussi faire des jointures externes en ajoutant des prédicats de jointure dans la clause ON, ce qui donnerait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Select ...
    From T1
    Left join T2
    On T1.cle= T2.cle
    And T1.C1 = 1
    Left join T3
    On T1.cle = T3.cle
    And T1.C1 = 2
    Gaffe, avec des jointures externes, tu récupèreras une ligne même si absence dans T2 et T3. Tout dépend de ce que tu souhaites sélectionner.

    Sinon, tu peux également faire un double contrôle d'existence conditionné par C1.

    Ces 2 solutions ont l'avantage de ne scanner T1 qu'une seule fois. Si cette table est volumineuse, le gain peut être conséquent.

    Bonne utilisation.

Discussions similaires

  1. Update avec jointure et case
    Par bernards111 dans le forum Débuter
    Réponses: 2
    Dernier message: 02/02/2015, 17h21
  2. decode, jointure ou case
    Par titi04 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 24/09/2009, 15h30
  3. Réponses: 5
    Dernier message: 26/02/2008, 13h42
  4. [SQL server 2000] Problème de jointure avec 'Case'
    Par Tankian dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/06/2006, 18h42
  5. Script avec JOINTURE et CASE
    Par Labienus dans le forum Langage SQL
    Réponses: 6
    Dernier message: 27/02/2004, 10h40

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