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 :

Count Recidive entre 2 date


Sujet :

Requêtes et SQL.

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 65
    Par défaut Count Recidive entre 2 date
    Bonjour,
    Je ne sais pas qu'elle expresion utiliser.
    J'ai une table RELEVE. Dans cette table, j'ai un une clé secondaire USAGER et un champ DATE_RELEVE.
    Je souhaite trouver tous les usager ayant fait l'objet de plusieurs Relevés à une date différente. il s'agit de RECIDIVE.
    Jusque là ça va.
    Maintenant je souhaite compter le nombre de récidives. Dans ce calcul, je ne doit pas prendre le premier releve.
    En fait si une personne à deux relevés je veux que ça me compte une récidive
    et si une personne à 3 relevés je veux 2 recidives...
    Précision le compte se fait entre pour Annee N-5.
    Je ne fais pas ma requête en VBA.
    Merci de votre aide.

  2. #2
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Par défaut
    Bonjour Nana35,

    Je te suggère, via l'assistant, donc :

    Requête R1 :
    - ajouter la table RELEVE (FROM) ;
    - sélectionner USAGER et année(DATE_RELEVE) (SELECT) ;
    - grouper par USAGER et année(DATE_RELEVE) (GROUP BY) ;
    - ajouter count(*) (SELECT) ;
    - critère année(DATE_RELEVE) > année(Date())-5 (WHERE (où) et non HAVING).
    ==> comptage des relevés, par année, pour les 5 années précédents, et pour un usager.

    Requête R2 :
    - ajouter la requête R1 (FROM) ;
    - sélectionner USAGER, année(DATE_RELEVE) et Recidive:count(*)-1 (SELECT) ;
    - critères Recidive<>0.
    ==> liste des usagers avec récidive.

    Non testées, donc à adapter, sans doute, à ton cas : sauf erreur de ma part, tous les éléments devraient être présents.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 65
    Par défaut
    Merci,
    C'est un peu mieux que ce que j'avais.
    Seulement ça me fait le cumul.
    Chaque année en fait je dois compter le nombre de récidives (récidives calculées entre les 5 dernières année, avant 5 ans c'est oublié)
    Par exemple
    Cumul
    Releve1 le 15 Mai 2004 Usager XXX 0 recidive
    Releve11 le 7 Mars 2006 Usager XXX 1 récidive
    Releve25 le 10 Sept 2006 Usager XXX 2 récidives
    Releve100 le 12 Oct 2010 Usager XXX seulement 2 récidives (celle de 2004 oubliée)
    Ce que je souhaite
    Résultat Requete pour l'anne 2004 o récidive
    Résultat Requete pour l'anne 2005 o récidive
    Résultat Requete pour l'anne 2006 2 récidives
    Résultat Requete pour l'anne 2007 o récidive
    Résultat Requete pour l'anne 2008 o récidive
    Résultat Requete pour l'anne 2009 o récidive
    Résultat Requete pour l'anne 2010 1 récidive
    Je ne vois pas comment arriver à celà
    Merci

  4. #4
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Par défaut
    Il me semble que tu changes le "cahier des charges" en cours de route...

    Quelques précisions. Tu dis :
    Seulement ça me fait le cumul.
    puis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Cumul 
    Releve1   le 15 Mai 2004  Usager XXX 0 recidive 
    Releve11  le 7  Mars 2006 Usager XXX 1 récidive 
    Releve25  le 10 Sept 2006 Usager XXX 2 récidives
    Releve100 le 12 Oct 2010  Usager XXX seulement 2 récidives (celle de 2004 oubliée)
    Cela veut-il dire que ce que tu appelles "Cumul" sont les données que tu as à ta disposition ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 65
    Par défaut
    Alors,
    Les requêtes que tu m'as donné font un cumul à mon sens . Et ce n'est pas ce que je souhaite. Et je n'ai pas de dionnées cumul comme tu peux le penser.
    Résultat actuel qui donne un cumul
    Releve1 le 15 Mai 2004 Usager XXX 0 recidive
    Releve11 le 7 Mars 2006 Usager XXX 1 récidive
    Releve25 le 10 Sept 2006 Usager XXX 2 récidives
    Releve100 le 12 Oct 2010 Usager XXX seulement 2 récidives (celle de 2004 oubliée)
    Je préfère
    Résultat Requete pour l'anne 2004 o récidive
    Résultat Requete pour l'anne 2005 o récidive
    Résultat Requete pour l'anne 2006 2 récidives
    Résultat Requete pour l'anne 2007 o récidive
    Résultat Requete pour l'anne 2008 o récidive
    Résultat Requete pour l'anne 2009 o récidive
    Résultat Requete pour l'anne 2010 1 récidive

  6. #6
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Par défaut
    Tu veux donc transformer ceci (que tu sais obtenir, donc) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Releve1 le 15 Mai 2004 Usager XXX 0 recidive 
    Releve11 le 7 Mars 2006 Usager XXX 1 récidive 
    Releve25 le 10 Sept 2006 Usager XXX 2 récidives
    Releve100 le 12 Oct 2010 Usager XXX seulement 2 récidives (celle de 2004 oubliée)
    en cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Résultat Requete pour l'anne 2004 o récidive
    Résultat Requete pour l'anne 2005 o récidive
    Résultat Requete pour l'anne 2006 2 récidives
    Résultat Requete pour l'anne 2007 o récidive
    Résultat Requete pour l'anne 2008 o récidive
    Résultat Requete pour l'anne 2009 o récidive
    Résultat Requete pour l'anne 2010 1 récidive

    Je me trompe ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 65
    Par défaut
    Oui oui

  8. #8
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Par défaut
    Oui oui
    à la question
    Je me trompe ?
    ==> je considère que tu as voulu dire que je ne me trompais pas (mais je peux me tromper...).


    Je te suggère :
    - de ne prendre que l'année de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Releve1   le 15  Mai 2004 Usager XXX 0 recidive 
    Releve11  le 7  Mars 2006 Usager XXX 1 récidive 
    Releve25  le 10 Sept 2006 Usager XXX 2 récidives
    Releve100 le 12  Oct 2010 Usager XXX seulement 2 récidives(2004 oubliée)
    - de créer une table Année contenant, simplement, un champ année "Année" que tu rempliras manuellement (2000, 2001, 2002, 2003, etc...) ;
    - de créer une requête avec la table Année en primaire, liée à la requête te permettant d'obtenir ton premier tableau avec flèche à droite.
    ==> tu devrais obtenir le résultat souhaité (les années de la table Année non présente dans ton premier tableau ressortiront à 0).

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 65
    Par défaut
    J'ai bien compris l'intérêt de la table Annee.
    Mais ça ne va pas. Dans ma requête permettant de trouver les relevésde 2010 par exemple dont l'usager aurait fait une récidive dans les 5 dernières années (récidives), j'obtiens toujours des recidives de 2008 par exemple pour lesquelle on aurait eu un relevé en 2006.
    Soit le CUMUL
    J'ai pensé faire autrement c'est a dire faire plusieurs requête pour chaque année cad tous les relevés de 2008, tous les relevés de 2009 etc
    Et si un usager de 2010 apparaît dans les requêtes entre 2006 et 2009 le considérer comme récidive.
    Mais je ne suis pas allée plus loin car ça me fait faire 36000 requêtes.
    Il manque surement une formule me permettant de compter les récidives mais pour le moment je me laisse un peu de temps pour me replonger dedans.
    Merci de ton aide.

Discussions similaires

  1. [MySQL] count compris entre 2 dates et heures precises
    Par gastoncs dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 16/02/2015, 19h06
  2. Calcul entre deux dates heures
    Par Isa31 dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 31/03/2005, 14h17
  3. Calculer une duree entre 2 dates
    Par d.w.d dans le forum C++
    Réponses: 7
    Dernier message: 02/03/2005, 23h39
  4. comment obtenir l’intervalle de mois entre deux date
    Par looc 6699 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/02/2005, 12h08
  5. calcule du nombre de jours entre 2 dates
    Par nazimb dans le forum ASP
    Réponses: 4
    Dernier message: 28/09/2004, 16h22

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