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 :

Que pensez vous de ma requète?


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 103
    Points : 59
    Points
    59
    Par défaut Que pensez vous de ma requète?
    Bonjour,

    Voici une requete pour créer des statistiques des 52 dernières semaine
    qu'en pensez vous?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DATE_FORMAT(datetime,"%x.%v"), COUNT(datetime) FROM cf55xautook WHERE datetime>SUBDATE(SUBDATE("2012-03-21 0:0:0",INTERVAL WEEKDAY("2012-03-21 0:0:0") DAY),INTERVAL 7*52 DAY) AND ndossier>100 GROUP BY WEEK(datetime)

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 576
    Points
    2 576
    Par défaut
    Si MySQL permet de l'exécuter, elle n'est pas juste d'un point de vue SQL pur. Votre clause GROUP BY ne comporte pas les colonnes du SELECT qui ne sont pas dans une fonction d'agrégat.

    Modifiez votre SELECT ou votre GROUP BY pour être cohérent.

    Un peu de lecture : http://sqlpro.developpez.com/cours/sqlaz/ensembles/#L1

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 103
    Points : 59
    Points
    59
    Par défaut
    Ok, merci

    Donc dans "group by" y faut toujours mettre le "group by" dans le select.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DATE_FORMAT(datetime,"%x.%v"), COUNT(datetime),WEEK(datetime) FROM cm556ok WHERE datetime>SUBDATE(SUBDATE("2012-03-21 0:0:0",INTERVAL WEEKDAY("2012-03-21 0:0:0") DAY),INTERVAL 7*52 DAY) AND ndossier>100 GROUP BY WEEK(datetime)

    Autre chose cette requête je dois l'exécuter sur deux tables différentes, ensuite mettre lés résultats ensembles.

    Mieux vaut exécuter les deux requêtes une après l'autre et faire l'assemblage par la suite ou bien Rassembler les deux requête en une seule?

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 576
    Points
    2 576
    Par défaut
    Toujours pas bon.

    La clause GROUP BY doit contenir toutes les colonnes/expressions qui ne sont pas utilisées dans une fonction d'agrégat au niveau du SELECT.

    C'est la remarque suivante dans le cours que j'ai mentionné :

    La présence de la clause GROUP BY est nécessaire dès que la clause de sélection, ou le filtre WHERE, ou encore les jointures comportent simultanément des calculs d'agrégation et la présence de colonnes de table hors de calculs d'agrégation.
    De plus, toutes les colonnes représentées hors des calculs d'agrégation doivent figurer dans la clause GROUP BY.
    Dans votre cas DATE_FORMAT(datetime,"%x.%v") ne figure pas dans le GROUP BY.


    Pour la deuxième question, vous pouvez utiliser l'opérateur ensembliste UNION pour "assembler" les deux requêtes. Voir ce cours : http://sqlpro.developpez.com/cours/sqlaz/ensembles/#L3

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 103
    Points : 59
    Points
    59
    Par défaut
    Ok je crois que j'ai compris,

    sinon on se retrouve avec des résultats grouper qui peuvent ne pas être équivalent. Dans mon cas ça change rien mais d'en d'autre.... ça pourrais être catastrophique...

    C'est parfois dur..

    J'ai bien penser à utiliser l'union mais la colonne count comprend la somme des deux.

    Un join serait plus approprier....
    Mais ma question est au niveau de la surchage du serveur mysql et du temps de requête?

Discussions similaires

  1. Que pensez-vous des générateurs de doc PHP ?
    Par Nonothehobbit dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 64
    Dernier message: 10/07/2007, 11h17
  2. Que pensez vous de filemaker
    Par thpopeye dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 14/06/2007, 16h20
  3. Que pensez vous du nouveau kernel 2.6 ?
    Par GLDavid dans le forum Administration système
    Réponses: 58
    Dernier message: 02/08/2004, 16h45
  4. [Débat] Que pensez-vous des langages à typage dynamique?
    Par Eusebius dans le forum Langages de programmation
    Réponses: 14
    Dernier message: 16/06/2004, 13h12
  5. Que pensez vous du mariage ASP Flash?
    Par tyma dans le forum Flash
    Réponses: 4
    Dernier message: 09/07/2003, 16h00

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