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 :

problème avec un case


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 9
    Par défaut problème avec un case
    Bonjour,
    Voici mon petit soucis..
    J'essaye de mettre en place un case dans la condition de ma requête SQL.

    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
     
    SELECT  nompren, ndosm, chamb, lit
    FROM lit 
    WHERE nompren IS NOT NULL
    AND usid in 
    CASE
        WHEN &IN_NUMUS = '14774' 
            THEN (41)
        WHEN &IN_NUMUS = '14775' 
            THEN (63)
        WHEN &IN_NUMUS = '14768' 
            THEN (30)    
        WHEN &IN_NUMUS = '14759' 
            THEN (1)  
        WHEN &IN_NUMUS = '14762' 
            THEN (24)  
        WHEN &IN_NUMUS = '14766'
            THEN (28) 
        ...
        ELSE
            (-1) 
    END
    Si je laisse ma requête comme cela, tout fonctionne parfaitement mais j'aimerais ajouter une nouvelle condition dans mon case.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    WHEN &IN_NUMUS = '14772' 
            THEN (183,34,182,181)
    Y a-t-il un moyen de faire cela? Car lorsque je teste ma requête, Oracle m'indique à chaque fois qu'il me manque une parenthèse.
    L'usid est un entier.

    Merci d'avance

  2. #2
    Membre éclairé Avatar de Doracle
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2010
    Messages : 60
    Par défaut
    Tu cherches a donner plusieurs valeurs a une seule variable !

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 9
    Par défaut
    oui je sais que j'essaye de donner plusieurs valeurs à la variable c'est pour ça que j'ai utiliser un in avant mon case d'ailleurs.

    y aurait-il un moyen de contourner ce problème?

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Si les valeurs en 14000 et quelques et les valeurs entre parenthèses proviennent d'une table, ne serait-il pas plus simple de faire une joitnure ?

    En d'autres mots, qu'est-ce qui t'a conduit à composer une telle requête pour le moins inhabituelle et pas tellement dans l'esprit d'un SGBDR ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 9
    Par défaut
    En fait mon application est basée sur 2 bases de données différentes d'où ma requête un peux bizarre.

    Le paramètre "&IN_NUMUS" possède un équivalent dans une table de ma DB1.
    Et il a un ou plusieurs équivalents dans ma deuxième DB...
    Le soucis est que le numus ne correspond pas entre les 2 DBs...
    Par exemple pour dans la 1ère DB je retrouve un us avec un numéro 14774 mais dans la deuxième DB l'équivalent possède l'ID 41.
    Pour les cas de ce genre, j'ai su les gérer et cela fonctionne grâce à ma requête postée grâce au case que j'ai mis en place.
    Mais l'US 14772 de ma première DB correspont en fait aux US 183 + 34 + 182 + 181 dans ma seconde base de données ce qui me pose mon petit problème.

    J'espère que mon explication est assez claire

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Si ces valeurs sont fixes, fait une table de correspondance et fait une jointure dessus, ce sera sûrement plus performant.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

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

Discussions similaires

  1. Problème avec un CASE.
    Par Picco dans le forum Oracle
    Réponses: 6
    Dernier message: 23/03/2006, 14h27
  2. Problèmes avec des cases à cocher et une liste déroulante
    Par rob2-9 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 25/01/2006, 10h52
  3. Problème avec les cases à cocher
    Par psycopat dans le forum Access
    Réponses: 8
    Dernier message: 20/10/2005, 14h25
  4. Problème avec les cases d'un groupe d'option.
    Par auriolbeach dans le forum Access
    Réponses: 2
    Dernier message: 01/10/2005, 07h33
  5. [Tableaux] Problème avec Switch case
    Par philippef dans le forum Langage
    Réponses: 4
    Dernier message: 07/09/2005, 16h37

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