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 :

Requête de date > optimisation


Sujet :

Requêtes MySQL

  1. #41
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select date(m1.`dateData`) as `jour`,max(m1.`P-`) as `valeur`,m3.`valeur` as `hier`, max(m1.`P-`)-m3.`valeur` as `ecart`
    from `maTable` m1
    inner join
    	(select date(m2.`dateData`) as `jour`,max(m2.`P-`) as `valeur`
    	from `maTable` m2
    	group by `jour`) m3
    	on to_days(m3.`jour`)-to_days(m1.`dateData`)=-1
    group by `jour`;

    tu vireras les colonnes `valeur` et `hier` une fois que tu as vérifier si ça marche...
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  2. #42
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 250
    Points : 75
    Points
    75
    Par défaut
    Citation Envoyé par ericd69 Voir le message
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select date(m1.`dateData`) as `jour`,max(m1.`P-`) as `valeur`,m3.`valeur` as `hier`, max(m1.`P-`)-m3.`valeur` as `ecart`
    from `maTable` m1
    inner join
    	(select date(m2.`dateData`) as `jour`,max(m2.`P-`) as `valeur`
    	from `maTable` m2
    	group by `jour`) m3
    	on to_days(m3.`jour`)-to_days(m1.`dateData`)=-1
    group by `jour`;

    tu vireras les colonnes `valeur` et `hier` une fois que tu as vérifier si ça marche...

    Whaaa ! Ca c'est au top

    Par contre, juste un truc que je comprends pas. Ca le prend pas le premier jour du mois (en ajoutant un WHERE dateDate LIKE '2012-05%' en fin de requête).

    As tu une idée ?

    Encore merci de ton aide.

  3. #43
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 250
    Points : 75
    Points
    75
    Par défaut
    Citation Envoyé par Fred_34 Voir le message
    Est-ce que tu dois garder l'historique ?
    Car une fois le "dateData 23h59" créé, si ton script supprimes les relevés intermédiaire, tu n'auras plus qu'un enregistrement par jour ( Sauf pour la date du jour).

    Si tu dois garder l'historique, tu peux te faire une seconde table qui contiendra uniquement les "dateData 23h59"
    Merci Fred, en effet je n'y avais pas pensé, et je pense qu'on peut gagner pas mal en perf avec cette méthode.
    La seule problématique, c'est pour les valeurs du jour courant.
    Le but est que chaque requête puisse prendre aussi le jour courant en compte. Du coup je sais pas si ce serait pratique - et possible - avec un seconde table ?

  4. #44
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    c'est quoi ton like?

    arrête d'utiliser une syntaxe de test pour chaine
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    where m1.`dateData` between '2012-05-01' and '2012-05-31'
    ou si tu veux automatiser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where year(m1.`dateData`)=2012 and month(m1.`dateData`)=5
    et la ça vaut le coup d'écrire des procédures stockées pour ne pas renvoyer la requête à chaque fois et ne faire qu'un appel avec 2 paramètres...

    vu la table ça sert à pas à grand de générer une seconde table ou alors autan, quitte à générer un total journalier, supprimer les ligne servant à le générer...
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  5. #45
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 250
    Points : 75
    Points
    75
    Par défaut
    Enfaite j'avais mal placé le like dans la requête. Finalement ça passe aussi bien avec un like qu'avec un beetween.

    Il semblerait par contre que le beetween permette de garder la requête en "cache". Car lors du second appel c'est instantané.


  6. #46
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    like n'est pas fait pour les dates...

    between oui et il utilise l'index
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  7. #47
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 250
    Points : 75
    Points
    75
    Par défaut
    Je crois que j'ai bien compris.

    Et mon problème est résolu (il me semble ).

    Merci à tous ceux qui ont participé à la résolution de ce problème.

    Merci Eric d'avoir géré mes deux problèmes et pris le temps de t'y intéresser

  8. #48
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 250
    Points : 75
    Points
    75
    Par défaut
    Arf, petit bug ! J'avais pas fais attention, mais on prend le MAX de la valeur, et non de la date. Et ça ça m'arrange pas. Parce que les compteurs sont mal fais, et il s'incrémentent mal.

    Donc du coup il faut que je prenne la date max, et non pas la valeur max.

    Tu vois ce que je veux dire ?

    Je test de faire un savant mélange de la requête que vous m'avez créé sur l'autre post et de celle ci, mais rien à faire, je suis trop mauvais je crois !

  9. #49
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    select date(m1.`dateData`) as `jour`,max(time(m1.`dateData`)) as `heure`,
    	m1.`P-` as `valeur`,m3.`valeur` as `hier`, coalesce(m1.`P-`-m3.`valeur`,m1.`P-`) as `ecart`
    from `maTable` m1
    left join
    	(select date(`dateData`) as `jour`,max(time(`dateData`)) as `heure`,`P-` as `valeur`
    	from `maTable`
    	group by `jour`) m3
    	on to_days(m3.`jour`)-to_days(m1.`dateData`)=-1
    -- where year(m1.`dateData`)=2012 and month(m1.`dateData`)=5
    group by `jour`;
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  10. #50
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 250
    Points : 75
    Points
    75
    Par défaut
    Merci à Eric, qui m'a bien aidé en privé sans le lui demandé

    Cette dernière requête reste à fouiller dans mon cas, car je n'ai pas le resultat recherché.

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. [Debutant]Requête et Date
    Par ghan77 dans le forum Bases de données
    Réponses: 5
    Dernier message: 07/01/2006, 21h35
  2. Requète sur dates compliquée ...
    Par itklif2 dans le forum Requêtes
    Réponses: 7
    Dernier message: 28/11/2005, 23h31
  3. [ADO] Requète sur dates
    Par cdlr27 dans le forum Bases de données
    Réponses: 3
    Dernier message: 26/01/2005, 22h39
  4. Requête sur date
    Par guenfood dans le forum Access
    Réponses: 11
    Dernier message: 08/12/2004, 16h11

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