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 :

2 requetes en 1 seule selon un ordre


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2008
    Messages : 8
    Par défaut 2 requetes en 1 seule selon un ordre
    Bonjour, voilà je suis assez nouveau dans le monde du dev, et j'ai une question assez conne, et surement facilement a résoudre mais je ne sais pas trop comment faire !

    Voila je vous explique un peu
    table (date, num_client,nom_client, resultat)
    date = année + le num semaine ex:200901 => semaine 01 de l'année 2009

    je dois faire une requête sur la table (au dessus) me permettant de ressortir la moyenne des résultats sur le mois d'avant et des 3 dernières semaines. Cette requête doit également être établie dans l'ordre décroissant des résultats de la semaine dernière S-1

    Quelqu'un a une idée !?! parce que je suis un peu perdu
    Merci pour vos reponses!!!

  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
    Les résultats des trois dernières semaines ça va être faisable mais le mois d'avant... comme on n'a pas la vraie date complète, ça ne pourra être qu'approximatif, une semaine pouvant être à cheval sur deux mois.

    Par ailleurs ta demande :
    je dois faire une requête sur la table (au dessus) me permettant de ressortir la moyenne des résultats sur le mois d'avant et des 3 dernières semaines. Cette requête doit également être établie dans l'ordre décroissant des résultats de la semaine dernière S-1
    Ca fait non pas une mais trois requêtes !

    Tu trouveras ici les fonctions de date de MySQL qui devraient te permettre d'extraire le mois (MONTH) précédent la date courante et la semaine de la date courante (WEEK). Regarde aussi du côté de PERIOD_ADD (on peut additionner une période négative pour remonter le temps).

    Ce que j'évoquais comme difficulté tient au fait que pour certains mois, WEEK(dernier jour du mois précédent la date courante) = WEEK(premier jour du mois en cours).

    Commençons le travail...
    1. La semaine de la date courante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT WEEK(CURRENT_DATE)
    2. Extraction de la semaine dans les dates de ta table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT CAST(RIGHT(`date`, 2) AS INTEGER) AS Semaine
    FROM taTable
    Au passage, ce n'est pas une bonne idée de nommer une colonne 'date' car c'est un mot du langage SQL. C'est pour ça que je l'ai entourée de `.

    3. Résultats des trois dernières semaines :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT num_client, nom_client, resultat, CAST(RIGHT(`date`, 2) AS INTEGER) AS Semaine
    FROM taTable
    WHERE CAST(RIGHT(`date`, 2) AS INTEGER) BETWEEN WEEK(CURRENT_DATE) - 4 AND WEEK(CURRENT_DATE) - 1
    Problème si on est début janvier : il faut prendre les dernières semaines de décembre... Je te laisse chercher...

    4. On fait la moyenne par client :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT num_client, nom_client, AVG(resultat) AS Moyenne
    FROM taTable
    WHERE CAST(RIGHT(`date`, 2) AS INTEGER) BETWEEN WEEK(CURRENT_DATE) - 4 AND WEEK(CURRENT_DATE) - 1
    GROUP BY num_client, nom_client
    Bon courage pour la suite.
    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 !

Discussions similaires

  1. [Access][Mysql]plusieures requetes en une seule
    Par Gwenved dans le forum Langage SQL
    Réponses: 1
    Dernier message: 05/05/2006, 12h10
  2. 2 Requetes en une seule procédure stockée
    Par jeff37 dans le forum Oracle
    Réponses: 3
    Dernier message: 14/11/2005, 15h43
  3. Réponses: 4
    Dernier message: 25/11/2004, 11h17
  4. requete en lecture seule
    Par mvg dans le forum InterBase
    Réponses: 8
    Dernier message: 04/02/2004, 17h21
  5. Resultat requete dans une seule colonne
    Par mathieu--g dans le forum Sybase
    Réponses: 2
    Dernier message: 08/07/2003, 13h42

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