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 MySQL Discussion :

Aide sur une requête


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 35
    Points : 26
    Points
    26
    Par défaut Aide sur une requête
    bonsoir, j'ai besoin de votre aide svp, n'étant pas dans l'informatique, j'ai un dossier à rendre vite et je bute sur la dernière question si vous pouviez m'aider svp merci
    d'avance.
    RQ5 : Quels sont les patients (BEN_NIR_IDT) qui ont eu plus de 5 antibiotiques différents en 2019 (donc plus de 5 code ATC différents PHA_ATC_C07,
    commençant par J01)?

    j'ai essayé cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select BEN_NIR_IDT, PHA_ATC_C07
    from(
    select BEN_NIR_IDT, PHA_ATC_C07, EXE_SOI_DTD, EXE_SOI_DTF
    FROM (IR_PHA_R
    inner join es_pha_f
    on IR_PHA_R.PHA_PRS_IDE = ES_PHA_F.PHA_PRS_IDE)
    where (EXE_SOI_DTD >= '2019-01-01' and EXE_SOI_DTF <= '2019-12-12')
    GROUP BY BEN_NIR_IDT, PHA_ATC_C07)
    where PHA_ATC_C07 like '%J01%'and HAVING count(*)>5;
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 188
    Points : 12 744
    Points
    12 744
    Par défaut
    Bonjour,
    Tu as une erreur dans ta requête ligne 4: si tu mets une parenthèse après un FROM, tu dois mettre une sous-requête.
    Or il n'y a pas de SELECT après cette parenthèse.
    Ensuite la clause HAVING n'est pas dans la clause WHERE, mais après. Donc le "and HAVING" est faux.
    Enfin tu as 4 colonnes dans le SELECT de la ligne 3, mais seulement 2 à la ligne 8, pour le GROUP BY correspondant. Il en manque donc 1.

    Une correction vite fait, pour que la requête soit syntaxiquement correcte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    select BEN_NIR_IDT, PHA_ATC_C07
    from(
    select BEN_NIR_IDT, PHA_ATC_C07, EXE_SOI_DTD, EXE_SOI_DTF
    FROM IR_PHA_R
    inner join es_pha_f
    on IR_PHA_R.PHA_PRS_IDE = ES_PHA_F.PHA_PRS_IDE)
    where EXE_SOI_DTD >= '2019-01-01' and EXE_SOI_DTF <= '2019-12-12'
    and PHA_ATC_C07 like '%J01%'
    GROUP BY BEN_NIR_IDT, PHA_ATC_C07, EXE_SOI_DTD, EXE_SOI_DTF
    HAVING count(*)>5;
    )
    Il y a peut-être d'autres modifications à faire pour que le résultat soit correct, mais au moins la requête fonctionne.

    Tatayo.

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 088
    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 088
    Points : 38 393
    Points
    38 393
    Billets dans le blog
    9
    Par défaut
    @tatayo : il faut compter les antibiotiques différents, il faut donc utiliser la clause DISTINCT pour ne pas compter plusieurs fois un même antibiotique pris plusieurs fois par la même personne en 2019.
    Et il ne faut pas tenir compte de la date de fin dans le filtrage : à partir du moment où la médication a commencé en 2019, même si elle continue sur 2020 elle répond bien au besoin.
    cf. la réponse dans l'autre fil de discussion sur le même sujet.

    @omzoway7 : merci de ne pas poser la même question dans différentes sections du forum.
    Vous trouverez réponse dans l'autre fil ici :
    https://www.developpez.net/forums/d2.../#post11743189
    Ainsi que de nombreuses remarques relatives à votre script DDL qui est à revoir.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 188
    Points : 12 744
    Points
    12 744
    Par défaut
    C'est ce que je disais dans mon message: je ne me suis occupé que de la syntaxe de la requête.

    Tatayo.

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

Discussions similaires

  1. [SQL] Besoin d'aide sur une requête
    Par Angath dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/01/2006, 17h26
  2. Réponses: 1
    Dernier message: 03/08/2005, 12h41
  3. Besoin d'aide sur une requête (JOIN + COUNT ?)
    Par PanzerKunst dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/06/2005, 11h29
  4. Aide sur une requête
    Par TshAw dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/02/2005, 12h42
  5. Aide sur une requête (Group By...??)
    Par Cocolapin dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/12/2004, 11h26

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