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 :

Clause SELECT dans un CASE WHEN THEN


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2018
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2018
    Messages : 42
    Par défaut Clause SELECT dans un CASE WHEN THEN
    Bonjour,

    J'ai cette requête qui m'affiche les pays de résidence de chacun de mes élèves mais sous forme de code pays :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CASE WHEN MATABLE.ELEVE.ADRESSE_ID IS NULL THEN 
    (SELECT MATABLE.PAYS.CODE_PAYS FROM MATABLE.PAYS WHERE MATABLE.PAYS.PAYS_ID =
    	   (SELECT MATABLE.ADRESSE.PAYS_ID
    			   FROM MATABLE.ADRESSE WHERE MATABLE.ADRESSE.ADRESSE_ID = MATABLE.PERSONNE.ADRESSE_ID))
    ELSE
    SELECT MATABLE.PAYS.CODE_PAYS FROM MATABLE.PAYS WHERE MATABLE.PAYS.PAYS_ID =
    	   (SELECT MATABLE.ADRESSE.PAYS_ID FROM MATABLE.ADRESSE WHERE MATABLE.ADRESSE.ADRESSE_ID = MATABLE.ELEVE.ADRESSE_ID))
    END                                                        AS PAYS_RESIDENCE,
    J'aimerais rajouter un CASE WHEN pour transformer mes code 105 en France, mes codes 112 en Allemagne, etc ....

    J'ai tenté plusieurs choses mais à chaque fois ça ne fonctionne pas.

    Quelqu'un saurait comment faire que mon CASE WHEN fonctionne dans cette requête svp ?

    Cordialement.
    Ludo

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 132
    Par défaut
    Je n'arrive pas bien à comprendre ce que tu essayes de faire dans ce morceau de code mais peut-être as-tu besoin simplement d'une jointure (éventuellement externe).
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre Expert
    Homme Profil pro
    Ingénieur d'Etude Mainframe/AS400
    Inscrit en
    Novembre 2012
    Messages
    1 776
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'Etude Mainframe/AS400
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 1 776
    Par défaut
    Bonjour cela me semble simple ce que tu veux mais c'est très mal expliqué … Pourrais-tu nous montrer le modèle de donnée et le résultat voulu (exemple) ?

  4. #4
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2018
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2018
    Messages : 42
    Par défaut
    Bonjour,

    En fait j'ai fais une requête qui me liste tous les élèves que j'ai en base en affichant tous les champs que j'ai choisi . Et l'un de ses champs est le pays de résidence. Mais plutôt que de m'afficher le pays de residence sous forme de code a 3 chiffres comme cest le cas actuellement je voudrais mettre en place un case when afin de remplacer chaque code à 3 chiffres par son véritable nom. Ex "105" pour "France".

    Je ne peux pas te donner un exemple du résultats souhaité car là requête est au travail.

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 544
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 544
    Billets dans le blog
    10
    Par défaut
    En ce cas, c'est bien une jointure qu'il faut utiliser.

    Soit les tables suivantes :
    EL_eleve(EL_ident, EL_nom, EL_prenom, ..., PY_ident#) avec PY_ident# qui fait référence à l'identifiant PK de la table PY_pays
    PY_pays(PY_ident, PY_code, PY_libelle, ...)

    La requête qui suit fera l'affaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT EL.EL_nom     as nom_eleve
         , EL.EL_prenom  as prenom_eleve
         , ...
         , PY.PY_code    as code_pays
         , PY.PY_libelle as lib_pays
    from       el_eleve as EL
    inner join py_pays  as PY
       on PY.PY_ident = EL.PY_ident
    order by ...
    Note : avoir l'identifiant du pays en clef étrangère dans la table des éleves est correct s'il s'agit du pays de naissance, mais pas s'il s'agit du pays du domicile. Car en ce cas, cette FK devrait être positionnée dans la table adresse.

  6. #6
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2018
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2018
    Messages : 42
    Par défaut
    Bonjour,

    Merci escartefigue, je vais regarder ça dans la journée et je viendrai vous dire ce que ça a donné.

    Bonne journée et merci encore.

Discussions similaires

  1. problème case when then jpql
    Par hadmarin dans le forum Persistance des données
    Réponses: 0
    Dernier message: 08/09/2011, 10h31
  2. Hibernate HQL : CASE WHEN THEN
    Par hisoft dans le forum Autres
    Réponses: 3
    Dernier message: 12/04/2011, 21h31
  3. Réponses: 1
    Dernier message: 10/05/2009, 02h07
  4. Réponses: 5
    Dernier message: 24/10/2008, 09h20
  5. Equivalent "Select Case when then else end" sur Paradoxe
    Par Seuh.m dans le forum Bases de données
    Réponses: 4
    Dernier message: 29/06/2006, 08h23

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