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 :

CASE POUR UN 'IN'


Sujet :

DB2

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 171
    Par défaut CASE POUR UN 'IN'
    bonjour à tous,

    j'essai du faire un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    Select * FROM ...
     
    where .... IN ( CASE
     
     
                 WHEN ...... = 'T'  THEN 'TEST'
                 WHEN ...... = 'A'  THEN 'TEST','ACCP'
                 WHEN ...... = 'P'  THEN 'TEST','ACCP','PROD'
     
     
                      ) END
    je ne sais pas si c'est possible et surtout je ne sais pas comment m'y prendre.

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 42
    Par défaut CASE POUR UN 'IN'
    Peut être avec cette syntaxe :
    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
     
    SELECT * FROM ...
    WHERE RUB1  IN (          
    CASE RUB2                 
    WHEN 'T' THEN 'TEST'   
    WHEN 'A' THEN 'TEST'   
    WHEN 'P' THEN 'TEST'   
    END,                      
    CASE RUB2                 
    WHEN 'A' THEN 'ACCP'   
    WHEN 'P' THEN 'ACCP'   
    END,                      
    CASE RUB2                 
    WHEN 'P' THEN 'PROD'   
    END )

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Par défaut
    Ta demande n'est pas très claire. Ne veux-tu pas plutôt établir la requête suivante ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT CASE MaZone 
                    When 'T' Then 'TEST'
                    When 'A' Then 'ACCP'
                    When 'P' Then 'PROD'
                    Else MaZone 
                END
    WHERE MaZone IN ('TEST', 'ACCP', 'PROD')
    Sinon, explique ce que tu veux faire.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 171
    Par défaut
    bonjour,

    Non C'est plus dans l'optique de la réponse de battistuta.
    Mais je n'ai pas encore eu le temps d'essayer, ce sera pour lundi.


    merci

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 171
    Par défaut
    Merci battistuta !!! ca fonctionne impeccablement.

  6. #6
    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
    Bonjour,

    Gaffe aux perfs. Avec la solution du CASE, tu pars en scan de la table. S'il est est volumineuse... Des fois, il faut savoir faire simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT ...
    FROM TAB
    WHERE (COL1 = 'X' AND COL2 = 0)
    OR (COL1 = 'Y' AND COL2 = 1)
    OR (COL1 = 'Z' AND COL2 = 2)
    OR ...
    Ou alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT ...
    FROM TAB
    WHERE (COL1, COL2) = ('X', 0)
    OR (COL1, COL2) = ('Y', 1)
    OR (COL1, COL2) = ('Z', 2)
    OR...
    Avec ces 2 écritures, s'il existe un index sur COL1 ou COL2, voire les 2 colonnes, DB2 se servira de cet index en Multiple Access Index, tu n'auras donc aucun souci de perf.

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

Discussions similaires

  1. [UML] Use Case pour une 'commande'
    Par _Kiro dans le forum Cas d'utilisation
    Réponses: 15
    Dernier message: 22/11/2006, 00h46
  2. Réponses: 8
    Dernier message: 18/11/2006, 23h06
  3. problème formulaire précocher des cases pour modif
    Par Skeud007 dans le forum Langage
    Réponses: 4
    Dernier message: 14/10/2006, 22h58
  4. Select case pour afficher un Etat selon un critère
    Par Sofie109 dans le forum Access
    Réponses: 4
    Dernier message: 06/09/2006, 17h31
  5. switch case pour deux variable en meme temps
    Par petitours dans le forum C
    Réponses: 3
    Dernier message: 06/11/2005, 20h20

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