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

Requêtes et SQL. Discussion :

[A-07] Afficher résultat si aucune entrée


Sujet :

Requêtes et SQL.

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de ip203
    Inscrit en
    Mars 2002
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 132
    Par défaut [A-07] Afficher résultat si aucune entrée
    Bonjour,

    Mon titre n'est pas très évocateur, je m'en excuse. Voici mon problème: j'ai trois tables: Demande, Résultat et Patient
    Résultat et Remande sont liées par un champs "NODEM", et Demande et Patient sont liées par un champ "NOPAT". J'aimerai créer une requête qui permette d'avoir pour tous les patients le même nombre de ligne résultat même si le patient n'a pas eu tel ou tel résultat. Je m'explique car c'est pas très clair: Je veux pour chaque patient 5 lignes représentant 5 résultats d'analyse (res1, res2, res3, res4 et res5). Ces résultats je les puise dans la table "Résultat" grâce a un champ nomé "CEXAM" qui contient les codes des examens. Si un patient n'a pas tous ces examens (admettons qu'il ai simplement des résultats pour res2 et res4) je voudrais avoir quand même une ligne avec les autres examens avec bien sûr une valeur à NULL. A noter que si le patient n'a pas eu les autres examens que ceux qu'il a, il n'y a aucune référence de ceux si dans la base avec le nom de patient.
    Comment puis-je faire ?

    Merci par avance de toute aide

    Bonne journée

  2. #2
    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 : 62
    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
    Un peu confus comme explication...

    Je tire de ce que tu as écrit les associations suivantes :
    Patient -0,n----Faire----1,1- Demande -0,1----Obtenir----1,1- Résultat

    Par contre tu dis que tu as 3 tables mais tu sembles évoquer aussi un lien avec une table d'examens.
    Ces résultats je les puise dans la table "Résultat" grâce a un champ nomé "CEXAM" qui contient les codes des examens.
    Il semble donc qu'on aie l'association supplémentaire :
    Résultat -1,1----Concerner----0,n- Examen

    L'enchaînement des associations ne se traduirait-il pas plutôt par la phrase :
    "Un patient fait une demande qui regroupe de 1 à plusieurs examens qui obtiennent chacun un résultat" ?
    Si oui, il y a une erreur de conception.

    Sinon, précise ton cahier des charges parce que là finalement je suis paumé !
    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 !

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 357
    Par défaut
    Bonjour,

    Jettez un coup d'oeil au niveau du type de relation (vous devez faire un inner join dans votre requete, or dans votre cas il faut que vous fassiez un left ou right join). Vous auurez ainsi des enregistrement avec des valeurs nulles. Avec un Inner Join, la requete ne prendra en compte que le resultats dont les clés se correspondent. (je sais pas si j'ai été très clair là )

    En esperant vous avoir aidé

  4. #4
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Par défaut
    salut à tous,

    bien que l'on puisse faire avec 'left join' et 'right join' pout obenir des enregistrements qui pour un patient associe un champ pour chaque examen ('colonne' et non 'ligne' comme tu dis ip203 )
    je conseil l'utilisation de fonction de domaine par ex dcount:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select
       NOPAT,
       DCount("CEXAM","Résultat","CEXAM='res1' AND NOPAT=" & NOPAT) as res1,
       DCount("CEXAM","Résultat","CEXAM='res2' AND NOPAT=" & NOPAT) as res2,
       ...
    from Patient
    mais si les codes exam <CEXAM> sont en fonction de [Demande], il faudra encore modifier ce code en:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    ..."CEXAM='" & DLookUp(...,"Demande",...) & "' AND NOPAT..."...

    mais il y a un petit pb: si le patient revient une autre fois faire ces n examens ou qu'il refait un examen en particulier, il faut pouvoir les dissocier: un numéro de dossier me parait indispensable avec une date d'examen qui devront apparaitre dans la requete.


  5. #5
    Membre confirmé Avatar de ip203
    Inscrit en
    Mars 2002
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 132
    Par défaut
    Bonjour,

    Tout d'abord merci pour votre aide, vous avez du courage vu que mon message n'est effectivement pas très clair. Pour répondre à cinePhil, je ne maîtrise pas la base car je n'en suis pas le concepteur. Je fais du datamining sur la base du système de gestion du laboratoire de l'hôpital de Mayotte (380 tables à peut près). J'ai à ma disposition le modèle de description des données et c'est tout. Voici l'organisation des tables qui m'interressent



    Ce que j'aimerai obtenir c'est pour chaque patient filtré selon des examens et la même date, obtenir pour chacun le même nombre de ligne (colonne ?) représentant les examens recherchés, même si pour certain examen et certain patient je n'ai pas d'entrée dans la table "Résultat.result". Par exemple, je filtre tous les patients qui ont eu les examens suivants: "PALU" OU "GGT" OU "MO3" (champ Resultat.CELEM). Pour le patient 1 j'ai par exemple PALU=NEG et GGT=0.34 mais il n'y a pas eu de demande de MO3 pour cette date. Je voudrait alors avoir quand même dans ma table résultante.
    Patient 1 PALU NEG
    Patient 1 GGT 0.34
    Patient 1 MO (NULL)

    Voilà j'espère avoir était plus clair.

    Merci par avance de votre aide...

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 87
    Par défaut
    hello!
    as_tu essayé avec une requete analyse croisée(RAC) avec:patient(entete ligne),examen(entete colonne),resultat(valeur)

    si tu veux en faire une table tu dois faire une requete creation de table qui contient cette RAC
    (j'ai ete clair ?)

Discussions similaires

  1. [AC-97] Afficher résultat de requête dans une zone de texte
    Par paflolo dans le forum IHM
    Réponses: 21
    Dernier message: 28/04/2022, 12h57
  2. [AC-2000] boucle pour calculer le nb de jours entre 2 dates et afficher résultat
    Par Remus91 dans le forum VBA Access
    Réponses: 3
    Dernier message: 18/06/2009, 10h36
  3. [MySQL] afficher résultat requete "Select From ..."
    Par winnie82 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 21/03/2006, 11h14
  4. affiche résultat en fonction du login windows
    Par bichonjp dans le forum ASP
    Réponses: 4
    Dernier message: 18/08/2005, 16h04
  5. Résultats erroné différence entre deux types TDateTime
    Par Alghero dans le forum C++Builder
    Réponses: 6
    Dernier message: 12/03/2004, 17h03

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