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

SQL Oracle Discussion :

problème de valeur NULL


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Par défaut problème de valeur NULL
    Bonjour,

    Je travaille sous Orcale 9i, voici les 3 tables concerné et les champs concernés par ma requête:
    C_QQUESTION (NIQ,LIBABR)
    BM_REP_S (NIR,REPONSE,NILIB)
    BM_LIB_S (NILIB,NIQ,NIQSUP,NIRSUP,PARENTE)

    Cette structure me permet de trouver les question reponses, les sous questions reponses (s'ils existent) et les sous sous questions reponses (s'ils existent). le NIQSUP fait reference au NIQ de la question mère, et le NILIBSUP fait reference à la reponse mère, quand ils sont à NULL, c'est que cette question n'a pas de question mère.

    voici ma requête:
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    select distinct q3.LIBABR,r3.REPONSE,NULL,NULL,NULL,NULL
    from PENSOINS.BM_LIB_S lib2,
    PENSOINS.C_QUESTION q3,PENSOINS.BM_REP_S r3
    where lib2.PARENTE like '674,%'
    and lib2.NIQ = q3.NIQ
    and lib2.NILIB = r3.NILIB
    UNION
    select distinct q3.LIBABR,r3.REPONSE,q2.LIBABR,r2.REPONSE,NULL,NULL
    from PENSOINS.BM_LIB_S lib2,
    PENSOINS.C_QUESTION q2,PENSOINS.BM_REP_S r2, 
    PENSOINS.C_QUESTION q3,PENSOINS.BM_REP_S r3
    where lib2.PARENTE like '674,%'
    and q2.NIQ = lib2.NIQ
    and r2.NILIB = lib2.NILIB
    and lib2.NIQSUP = q3.NIQ
    and lib2.NILIBSUP = r3.NILIB
    UNION
    select distinct q3.LIBABR,r3.REPONSE,q2.LIBABR,r2.REPONSE, q1.LIBABR,r1.REPONSE
    from PENSOINS.BM_LIB_S lib1,PENSOINS.BM_LIB_S lib2, 
    PENSOINS.C_QUESTION q1, PENSOINS.BM_REP_S r1, 
    PENSOINS.C_QUESTION q2,PENSOINS.BM_REP_S r2, 
    PENSOINS.C_QUESTION q3,PENSOINS.BM_REP_S r3
    where lib1.NIQ = q1.NIQ
    and  lib1.NILIB = r1.NILIB
    and lib1.PARENTE like '674,%'
    and lib1.NIQSUP = q2.NIQ
    and lib1.NILIBSUP = r2.NILIB
    and q2.NIQ = lib2.NIQ
    and r2.NILIB = lib2.NILIB
    and lib2.NIQSUP = q3.NIQ
    and lib2.NILIBSUP = r3.NILIB
    mon problème est que pour une question de type "ATCD respiratoires" le médecin à plusieurs choix soit il peut cocher "Asthme" ou "Sarcoïdose" ou "Embolie pulmonaire"...etc, mais seulement quand on coche "Asthme" il y'a une sous question qui apparait "Age lors découverte de l'asthme".
    Dans le resultat de ma requête ci-dessous, j'obtiens parmis les questions, la question "ATCD respiratoires", et comme reponse "NULL" (pour les patients qui n'ont pas d'ATCD respiratoires), mais j'obtiens quand même une sous question "Age lors découverte de l'asthme" avec une reponse.
    ce problème est du au fait que lorsqu'il n'y a pas de réponse le BM_REP_S .NILIB est "NULL"

    j'ajoute que je n'ai pas les droit pour changer la structure de la base!!

    je vous remercie d'avance.

  2. #2
    Membre chevronné
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Par défaut
    Pour la compréhension de tous , pouriez vous ajouter un exemple de données avec :
    1 - le resultat courant
    et
    2 - le resultat souhaité

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Par défaut
    merci de m'avoir répondu,
    entre temps j'ai modifié ma requête pour éviter les doublants
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    select distinct p.NIP, p.NOM, p.PRENOM,sj.DATE_ENT,q3.LIBABR,r3.REPONSE,NULL,NULL,NULL,NULL
    from PENSOINS.BM_LIB_S lib2,
    PENSOINS.C_QUESTION q3,PENSOINS.BM_REP_S r3,
    PENSOINS.BM_TH_S th,PENSOINS.SEJOUR sj, 
    PENSOINS.PATIENT p
    where lib2.PARENTE like '674,%'
    and lib2.NIQ = q3.NIQ
    and lib2.NILIB = r3.NILIB
    and lib2.NIQSUP is NULL
    and lib2.NILIBSUP is NULL
    and th.NITH = lib2.NITH
    and sj.NISEJOUR = th.NISEJOUR
    and p.NIPATIENT = sj.NIPATIENT
    UNION
    select distinct p.NIP, p.NOM, p.PRENOM,sj.DATE_ENT,q3.LIBABR,r3.REPONSE,q2.LIBABR,r2.REPONSE,NULL,NULL
    from PENSOINS.BM_LIB_S lib2,PENSOINS.BM_LIB_S lib3,
    PENSOINS.C_QUESTION q2,PENSOINS.BM_REP_S r2, 
    PENSOINS.C_QUESTION q3,PENSOINS.BM_REP_S r3,
    PENSOINS.BM_TH_S th,PENSOINS.SEJOUR sj, 
    PENSOINS.PATIENT p
    where lib2.PARENTE like '674,%'
    and q2.NIQ = lib2.NIQ
    and r2.NILIB = lib2.NILIB
    and lib2.NIQSUP = q3.NIQ
    and lib2.NILIBSUP = r3.NILIB
    and lib2.NIQ = q3.NIQ
    and lib2.NILIB = r3.NILIB
    and lib3.NIQSUP is NULL
    and lib3.NILIBSUP is NULL
    and th.NITH = lib3.NITH
    and sj.NISEJOUR = th.NISEJOUR
    and p.NIPATIENT = sj.NIPATIENT
    UNION
    select distinct p.NIP, p.NOM, p.PRENOM,sj.DATE_ENT,q3.LIBABR,r3.REPONSE,q2.LIBABR,r2.REPONSE, q1.LIBABR,r1.REPONSE
    from PENSOINS.BM_LIB_S lib1,PENSOINS.BM_LIB_S lib2, 
    PENSOINS.C_QUESTION q1, PENSOINS.BM_REP_S r1, 
    PENSOINS.C_QUESTION q2,PENSOINS.BM_REP_S r2, 
    PENSOINS.C_QUESTION q3,PENSOINS.BM_REP_S r3,
    PENSOINS.BM_TH_S th,PENSOINS.SEJOUR sj, 
    PENSOINS.PATIENT p
    where lib1.NIQ = q1.NIQ
    and  lib1.NILIB = r1.NILIB
    and lib1.PARENTE like '674,%'
    and lib1.NIQSUP = q2.NIQ
    and lib1.NILIBSUP = r2.NILIB
    and q2.NIQ = lib2.NIQ
    and r2.NILIB = lib2.NILIB
    and lib2.NIQSUP = q3.NIQ
    and lib2.NILIBSUP = r3.NILIB
    and th.NITH = lib2.NITH
    and sj.NISEJOUR = th.NISEJOUR
    and p.NIPATIENT = sj.NIPATIENT
    le problème c'est que dans le resltat actuel, j'obtiens par fois, des patients pour lesquels
    LIBABR (question) = "ATCD respiratoire"
    REPONSE = NULL
    LIBABR (sous question) = "Age lors découverte de l'asthme"
    REPONSE (reponse de la sous question) = "7"


    je dois obtenir dans ce cas:
    LIBABR (question) = "ATCD respiratoire"
    REPONSE = asthme
    LIBABR (sous question) = "Age lors découverte de l'asthme"
    REPONSE (reponse de la sous question) = "7"

    j'ai vérifié à partir de l'interface du logiciel que pour ces patient la reponse "asthme" a été coché.

    NB: j'ai aussi une autre question, comment je peux ordonner mes resultats, parce que quand je fais ORDER by p.NOM ça marche pas
    voilà, je vous remercie encore

  4. #4
    Membre chevronné
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Par défaut
    Citation Envoyé par Smix007
    NB: j'ai aussi une autre question, comment je peux ordonner mes resultats, parce que quand je fais ORDER by p.NOM ça marche pas
    voilà, je vous remercie encore
    Essayez "order by 2" (Le nom est le 2ème champ de votre requete)

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Par défaut
    merci, c'est Ok pour l'ordre, il me reste lénigme des valeurs NULL

  6. #6
    Membre chevronné
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Par défaut
    Citation Envoyé par argoet
    Pour la compréhension de tous , pouriez vous ajouter un exemple de données avec :
    1 - le resultat courant
    et
    2 - le resultat souhaité
    Merci d'etre plus clair dans vos explications , en l'etat, je ne comprends pas votre demande

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Par défaut
    merci pour votre aide,
    j'ai finalement résolu le problème en ajoutant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    and not exists (select lib1.NIQSUP from PENSOINS.BM_LIB_S lib1 where lib1.PARENTE like '674,%' and lib2.NIQ = Lib1.NIQSUP)
    dans la deuxième et la troisième requête de l'union.

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

Discussions similaires

  1. [VxiR2] Problème des valeurs null
    Par ahmed_amine dans le forum Deski
    Réponses: 2
    Dernier message: 28/02/2011, 17h10
  2. Modification d'algo problème de valeur null
    Par goblin dans le forum Langage
    Réponses: 5
    Dernier message: 09/03/2007, 18h41
  3. [CSV] problème de valeur null (isset)
    Par Commodore dans le forum Langage
    Réponses: 3
    Dernier message: 06/06/2006, 16h34
  4. Problème de valeur nulle
    Par romulus34 dans le forum Access
    Réponses: 11
    Dernier message: 21/10/2005, 15h18
  5. Problème de valeur null dans un recordset
    Par Petzouille57 dans le forum Access
    Réponses: 3
    Dernier message: 19/05/2005, 11h27

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