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

Designer Discussion :

Faire un CASE avec table en outer join


Sujet :

Designer

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Responsables applications décisionnelles
    Inscrit en
    février 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsables applications décisionnelles
    Secteur : Santé

    Informations forums :
    Inscription : février 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Faire un CASE avec table en outer join
    Bonjour,

    Avant de poser mon problème, voici un peu le contexte :
    Dans mon univers, j'ai 2 tables VRS et VRS_SIH liées en outer join sur VRS via 2 champs (RMJ_C_IDE et VRS_C_IDE). Ma table VRS_SIH contient uniquement les rendez-vous ayant été paramétré au moins une fois à la prise de RDV en ligne, donc ne contient pas tous les ID de RDV. J'ai donc créé un nouveau champ (VACATION_OUVERTE_KELDOC_ON) dans VRS_SIH qui en fonction de la valeur de 2 champs indique O pour un rdv ouvert à la prise en ligne ou N pour les rdv non ouverts, avec un CASE, tout fonctionne bien jusque là.

    J'ai mis le détail de mon univers avec ces 2 tables en PJ.


    Mon problème : dans mon univers, j'ai créé un objet "Indication RDV ouvert O/N" qui prend la valeur de VR_SIH.VACATION_OUVERTE_KELDOC_ON.
    Si le RDV est absent de la table VRS_SIH, alors aucune valeur n'est renvoyée et je perds cette ligne dans mes requêtes.
    Or, j'aimerais que mon objet indique O si la valeur est O, et N si la valeur est N ou n'existe pas (NULL).

    J'ai essayé différentes formules pour définir mon objet mais sans succès :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CASE  
    WHEN DER_VRS_SIH.VACATION_OUVERTE_KELDOC_ON IS NULL THEN 'NULL' 
    ELSE DER_VRS_SIH.VACATION_OUVERTE_KELDOC_ON
    END
    => Les valeur NULL ne sont pas renvoyées

    J'ai tenté la même chose avec un DECODE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DECODE( DER_VRS_SIH.VACATION_OUVERTE_KELDOC_ON, NULL, 'NULL',  DER_VRS_SIH.VACATION_OUVERTE_KELDOC_ON)
    Puis avec un NOT EXISTS, mais j'obtiens une erreur Oracle 00942 Table ou vue inexistante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CASE
    WHEN  DER_VRS_SIH.VACATION_OUVERTE_KELDOC_ON IS NULL THEN 'NULL'
    WHEN NOT EXISTS (SELECT DER_VRS_SIH.VACATION_OUVERTE_KELDOC_ON FROM DER_VRS_SIH WHERE DER_VRS_SIH.RMJ_C_IDE=F_VRS.RMJ_C_IDE AND DER_VRS_SIH.VRS_C_IDE=F_VRS.VRS_C_IDE)
     THEN 'NOT EXISTS'
    ELSE DER_VRS_SIH.VACATION_OUVERTE_KELDOC_ON
    END

    Auriez-vous une idée de comment je pourrais corriger mon CASE NOT EXISTS ? Ou de quelle autre formule je pourrais utiliser ?

    Un grand merci d'avance
    Images attachées Images attachées  

  2. #2
    Nouveau Candidat au Club
    Femme Profil pro
    Responsables applications décisionnelles
    Inscrit en
    février 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsables applications décisionnelles
    Secteur : Santé

    Informations forums :
    Inscription : février 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    En faisant d'autres essais, pour n'afficher que les valeurs absentes de la table DER_VRS_SIH, je ne comprends pas le résultat obtenu.
    En créant un objet TEST :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT
    F_VRS.VRS_C_IDE
    WHERE
    DER_VRS_SIH.VRS_C_IDE IS NULL
    Puis dans Propriété / Afficher (liste de valeurs, je suis dans un univers au format unv) => la requête ne renvoie aucun résultat.


    Et toujours impossible de faire un NOT EXISTS :
    Erreur ORA table ou vue inexistante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT
    F_VRS.VRS_C_IDE
    WHERE
    NOT EXISTS (select * from DER_VRS_SIH)
    même chose avec un NOT IN.


    Encore un grand merci d'avance à tous ceux qui auraient des idées

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Responsables applications décisionnelles
    Inscrit en
    février 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsables applications décisionnelles
    Secteur : Santé

    Informations forums :
    Inscription : février 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bon... j'ai trouvé l'origine de mon problème. Mes 2 tables sont en jointure externe mais sur 2 champs, donc la jointure externe a sauté.
    Comment faire dans ce cas ?

    Merci d'avance

  4. #4
    Nouveau Candidat au Club
    Femme Profil pro
    Responsables applications décisionnelles
    Inscrit en
    février 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsables applications décisionnelles
    Secteur : Santé

    Informations forums :
    Inscription : février 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bon... finalement j'ai résolu mon problème en concaténant mes 2 champs pour avoir un IDVRS.

    J'ai donc une jointure externe sur un seul champ.

    Mais quand je fais mon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CASE 
    WHEN DER_VRS_SIH.IDEVRS IS NULL THEN 'NULL'
    ELSE DER_VRS_SIH.VACATION_OUVERTE_KELDOC_ON
    END
    Dans mon univers, liste des valeurs, je n'ai pas de valeurs NULL renvoyées

    Comment faire sans passer par un autre objet qui donnerait uniquement les valeurs WHERE IDEVRS IS NULL ?

    Merci d'avance

Discussions similaires

  1. Construction requête : problème avec un LEFT OUTER JOIN
    Par riomois85 dans le forum Développement
    Réponses: 6
    Dernier message: 22/08/2014, 15h25
  2. Problème avec un FULL OUTER JOIN
    Par sky_perrinos dans le forum Requêtes
    Réponses: 3
    Dernier message: 07/04/2014, 16h34
  3. Sélection d'un MIN(field) avec un LEFT OUTER JOIN
    Par bilbonec dans le forum Requêtes
    Réponses: 4
    Dernier message: 10/09/2012, 12h52
  4. faire un case avec plusieurs résultats
    Par delaio dans le forum Développement
    Réponses: 6
    Dernier message: 06/12/2010, 18h20
  5. [MySQL] doublons avec du left outer join
    Par bigs3232 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 04/10/2010, 22h41

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