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

Sondages et Débats Discussion :

Discution sous-requete dans la close FROM


Sujet :

Sondages et Débats

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 39
    Points : 80
    Points
    80
    Par défaut Discution sous-requete dans la close FROM
    Bonjour à toutes et à tous,

    Suggestion, question de "newbie"
    Ce texte sera donc caché
    est-il implémenté sur le forum?

    A propos de http://www.developpez.net/forums/access/...syntaxe d'inclusion de sous-requête dans une close FROM j'ai un exercice/exemple à vous soumettre.

    Contexte : calcul prévisionnel de coût de traitement en fonction de(s) affections d'un patient.

    Définition : DDD=Defined_Daily_Dose et pas Data Display Debugger, hein !
    Pour ceux qui aiment tout chiffrer: http://fr.wikipedia.org/wiki/Liste_de_codes_CIM-10

    L'exercice : une table tTest de structure :



    A remplir avec :



    Création d'une requête affichant le nombre total d'affections pour chaque patient, la somme DDD pour chaque affection dont (l'intensité de) la symptomato(logie) est >1 :



    Quelle est l'instruction SQL la plus courte ?

    Je vous soumettrai "ma" solution plus tard (y a pas de spoiler apparemment).
    Même en mettant (sous-requête), Access (2002 pour le coup) me la transforme en [sous-requête].

    P.S.1 Je suis loin d'être pro en SQL.

    P.S.2 Comme suggéré dans le billet http://www.developpez.net/forums/...Construisez un formulaire afin de lister TOUTES (Ctr, Form, etc) les instructions SQL +Filtrer +Modifier,
    je cite "Une demo avec un fichier ACCESS évitera beaucoup de mots et de maux!!!"
    Pouvez-vous me donner quelques conseils, liens ou procédures pour ajouter un fichier exemple ?

    a+
    Alain

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 612
    Points : 56 717
    Points
    56 717
    Billets dans le blog
    40
    Par défaut
    bonsoir,

    bizarre, pas vraiment un débat, plutôt une discussion technique non ?

    Pour le moment, je ne vois pas bien comment tu obtiens ton résultat avec le jeu de données que tu as fourni.

    pour 13-C35.2, je ne vois que 2 lignes avec idsymptomato>1, ton résultat donne pourtant 3 affections, un truc m'échappe...

    donc, sur la seule base de ton énoncé:
    Création d'une requête affichant le nombre total d'affections pour chaque patient, la somme DDD pour chaque affection dont (l'intensité de) la symptomato(logie) est >1 :
    je propose:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT idpatient,
           COUNT(*)    AS nbaffection,
           idaffection,
           SUM(prixdd) AS prix_dd
    FROM   ttest
    WHERE  idsymptomato > 1
    GROUP  BY idpatient,
              idaffection
    ... et comme je ne vois pas de sous-requête, je doute...

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 39
    Points : 80
    Points
    80
    Par défaut
    Bonsoir,

    Un débat technique ? o_O

    On peut imaginer un schéma plus classique Client-Commande-DetailCommande-Produit auquel on ajouterait un champ "Colisage". Le nombre de colis (souvent 1) n'étant pas connu au départ, il est plus facile de l'incorporer à la table détail de commande. On aura donc une triple clef primaire : idCommande-idColis-IdArticle.

    Le même exercice consisterait à afficher le N° de commande, le nombre de colis, le N° de colisage (de chaque colis) et le nombre total d'articles de la commande

    Activons nos neurotransmetteurs

    Ma solution (je ne suis pas pro).



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT DISTINCT R.idPatient, R.idAffection, Sum(R.SPrixDDD) AS SomPrixDDD, Count(T.idAffection) AS nbAffection
      FROM [SELECT DISTINCT s.idPatient, s.idAffection FROM tTest AS s
        WHERE s.idSymptomato>1 
        GROUP BY s.idPatient, s.idAffection]. AS T 
    INNER JOIN 
    [SELECT DISTINCT s.idPatient, s.idAffection, Sum(s.PrixDDD) AS SPrixDDD 
      FROM tTest AS s 
       WHERE s.idSymptomato>1 
       GROUP BY s.idPatient, s.idAffection]. AS R 
    ON T.idPatient = R.idPatient
    GROUP BY R.idPatient, R.idAffection
    WITH OWNERACCESS OPTION;
    N.B Access 2002 et 2003 enregistrent ce type de sous-requêtes avec [] même si on remet les parenthèses.

    Bon tord méninge à tous les lecteurs.
    Alain

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 612
    Points : 56 717
    Points
    56 717
    Billets dans le blog
    40
    Par défaut
    bonsoir,

    on peut simplifier un peu...

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [SELECT DISTINCT s.idPatient, s.idAffection FROM tTest AS s
        WHERE s.idSymptomato>1 
        GROUP BY s.idPatient, s.idAffection]. AS T
    le GROUP BY est ici inutile si on peut employer DISTINCT, soit:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [SELECT DISTINCT s.idPatient, s.idAffection FROM tTest AS s
        WHERE s.idSymptomato>1]. AS T

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ...[SELECT DISTINCT s.idPatient, s.idAffection, Sum(s.PrixDDD) AS SPrixDDD 
      FROM tTest AS s 
       WHERE s.idSymptomato>1 
       GROUP BY s.idPatient, s.idAffection]. AS R
    ici le GROUP BY est nécessaire pour faire la somme mais ne peut pas ramener de doublons, ce qui rend le DISTINCT inutile.

    même raisonnement pour le DISTINCT inutile de la requête principale, ce qui donne au final:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT R.idPatient, R.idAffection, Sum(R.SPrixDDD) AS SomPrixDDD, Count(T.idAffection) AS nbAffection
      FROM [SELECT DISTINCT s.idPatient, s.idAffection FROM tTest AS s
        WHERE s.idSymptomato>1]. AS T 
    INNER JOIN 
    [SELECT s.idPatient, s.idAffection, Sum(s.PrixDDD) AS SPrixDDD 
      FROM tTest AS s 
       WHERE s.idSymptomato>1 
       GROUP BY s.idPatient, s.idAffection]. AS R 
    ON T.idPatient = R.idPatient
    GROUP BY R.idPatient, R.idAffection
    WITH OWNERACCESS OPTION;

    un bon tord-méninge en tout cas, bonne continuation...

Discussions similaires

  1. [Toutes versions] Access et la syntaxe d'inclusion d'une sous-requête dans la close FROM
    Par NeuroTransMetteur dans le forum Contribuez
    Réponses: 2
    Dernier message: 17/03/2012, 00h30
  2. [Toutes versions] Access et la syntaxe d'inclusion d'une sous-requête dans la close FROM
    Par NeuroTransMetteur dans le forum Sondages et Débats
    Réponses: 0
    Dernier message: 16/03/2012, 19h44
  3. [Doctrine] sous-requete dans la clause FROM
    Par jotatan dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 20/01/2012, 08h31
  4. [SQL-Server] Sous requete dans une procédure stockée
    Par Worldofdada dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 09/02/2006, 11h18
  5. Sous-requete dans un etat
    Par kbh dans le forum Access
    Réponses: 5
    Dernier message: 09/11/2005, 09h05

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