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

PHP & Base de données Discussion :

Tracer un graphique de températures stockés dans une base de donées Mysql


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 10
    Points : 4
    Points
    4
    Par défaut Tracer un graphique de températures stockés dans une base de donées Mysql
    Bonjour à tous.

    Petite mise en situation de mon problème :
    Dans ma maison il y a X capteurs de températures dont les mesures sont stockées toutes les 5 minutes par un logiciel dans une base de donnée. Celui-ci remplit alors une table d'une base Mysql qui à la structure suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
       CHAMP            TYPE
      DATETIME        DATETIME
    Id_capteur1        float
    Id_capteur2        float
    Id_capteur3        float
    Id_capteurx        float
        ....           float
    Afin de simuler une utilisation dans le temps, j'ai généré une table simulant un peu plus de 5 ans de relevés de températures. On obtient alors une table d'un peu plus de 40 Mio contenant un peu plus de 635100 enregistrements.

    Ce que je souhaite en faire et pourquoi ?
    Le but d'une telle base de données et bien entendu d'abord et avant tout de permettre de comparer celles-ci d'une année sur l'autre, d'un jour sur l'autre, ect ... Pour ce faire la façon la plus parlante pour nous autres êtres humains se trouve être de mettre en forme ces données dans un graphique. Mais avant cela faut-il encore réussir est extraire ces données et à la mettre en forme pour qu'elles puissent ensuite être interpréter par une solution genre Jpgraph, google chart ou encore Openflashchart (je n'en suis pas encore à choisir ça...)

    Problème premier :
    Extraire les données de la base dans une plage de temps donnée n'est pas vraiment un problème. Par contre, la quantité de données à traiter est telle que si la génération d'un graphique sur une journée ne pose pas de problème, générer ce même graphique pour une année demande un temps de traitement tellement conséquent que cette solution n'est tout simplement pas envisageable...

    Solution à ce premier problème :
    Je me suis alors dit que je devais limiter le nombre de valeurs à traiter par la suite. Je me suis donné comme base 288 valeurs quelque soit la base de temps (288 est le nombre de mesures pour une journée). J'ai donc écrit un bout de code (je suppose que c'est le bon moment pour préciser que je suis débutant) pour voir ce que ça donnerais en temps de traitement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    //Essai génération date
    $start_time = strtotime('11-09-2007 0:00:00');
    $end_time = strtotime('12-09-2007 00:00:00');
     
    $start_mysql_time = $start_time;
    $end_mysql_time = $start_mysql_time + 300;
     
    while ($end_mysql_time <= $end_time)
    {
    $select_time_start = date('Y', $start_mysql_time).'-'.date('m', $start_mysql_time).'-'.date('d', $start_mysql_time).' '.date('H', $start_mysql_time).':'.date('i', $start_mysql_time);
    $select_time_stop = date('Y', $end_mysql_time).'-'.date('m', $end_mysql_time).'-'.date('d', $end_mysql_time).' '.date('H', $end_mysql_time).':'.date('i', $end_mysql_time);
     
    $reponse = $bdd->query('SELECT AVG(Id_capteur1) FROM ' . $tableLogTemp . ' WHERE DATETIME BETWEEN \'' . $select_time_start . '\' AND \'' . $select_time_stop . '\'');
     
    while ($donnees = $reponse->fetch())
    {
    print_r($donnees);
    }
     
    $reponse->closeCursor();
    $start_mysql_time = $end_mysql_time;
    $end_mysql_time = $start_mysql_time + 300;
    }
    Mon problème actuel :
    Vous l'aurez compris, mon bout de code à juste pour but de tester la faisabilité de la chose et il se trouve que ... Ba ce n'étais pas une bonne idée. Chaque requête vers la DB prend plus ou moins 1 seconde. Multipliée par 280... soit un résultat garantie de :

    Fatal error: Maximum execution time of 60 seconds exceeded in D:\xampp\htdocs\V0_4\select_datetime.php on line 35
    Conclusion :
    Si je pense que mon approche du problème est la bonne, il est claire que ma solution ne l'est pas. Quelqu'un aurait t'il une idée pour que je puisse parvenir à mes fins ?

    Merci d'avance ne serais ce que pour le temps pris pour lire tout ça ^^

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Une requête comme ça est trop longue à executer ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DATE_FORMAT(champ_date, 'd/m/Y'), AVG(Id_capteur1) FROM table WHERE champ_date BETWEEN 2010-01-01 AND 2010-12-31 GROUP BY DATE_FORMAT(champ_date, 'd/m/Y')
    Mais si tu dois présenter régulierement ce graphique, il serait plus judicieux de pré-calculer les périodes passées.

    Au passage n'appelle pas ton champ "DATETIME".
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Candidat au Club
    Inscrit en
    Octobre 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Salut sabotage.

    Merci de t'intéresser à mon cas. Malheureusement le nom du champ est imposé par le logiciel qui remplie la base... Donc DATETIME obligatoire.

    Je ne comprend pas ta requête mais je l'ai essayé quand même : Mysql ne retourne aucun enregistrement ... :-s

    En gros ce que je cherche à faire c'est récupérer dans ma base les 105120 valeurs qui sont mesurer en une années et les "convertir" en 288 valeurs qui seront chacune une moyenne d'une tranche de 365 valeurs prises dans la table ...

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    J'ai oublié les guillemets :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DATE_FORMAT(champ_date, 'd/m/Y'), AVG(Id_capteur1) FROM table WHERE champ_date BETWEEN '2010-01-01' AND '2010-12-31' GROUP BY DATE_FORMAT(champ_date, 'd/m/Y')
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Candidat au Club
    Inscrit en
    Octobre 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Après essaie avec la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT DATE_FORMAT(  'DATETIME',  'd/m/Y' ) , AVG( 8A000001C3A1E328 ) 
    FROM logtemp
    WHERE DATETIME
    BETWEEN  '2010-01-01'
    AND  '2010-12-31'
    GROUP BY DATE_FORMAT(  'DATETIME',  'd/m/Y' )
    J'obtiens en retour un tableau avec d'un coté : DATE_FORMAT('DATETIME', 'd/m/Y' ) = NULL
    Et de l'autre : AVG( 8A000001C3A1E328 ) = 7.96933722581582

    ...

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pour encadrer le nom de champ c'est ` pas '

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT DATE_FORMAT(`DATETIME`,  'd/m/Y' ) , AVG( 8A000001C3A1E328) 
    FROM logtemp
    WHERE DATETIME
    BETWEEN  '2010-01-01'
    AND  '2010-12-31'
    GROUP BY DATE_FORMAT(`DATETIME`,  'd/m/Y' )
    A quoi correspond 8A000001C3A1E328 ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Candidat au Club
    Inscrit en
    Octobre 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Ok pour le nom du champ mais la réponse à la requête reste la même...

    8A000001C3A1E328 est l'ID d'un des capteurs.

    Je suis entrain de voir pour faire faire ce que je veux par PHP. Du coup je fais une requête unique à Mysql et après je parse mon tableau (mes tableaux) pour en extraire le nombre de moyenne souhaitée... En plus ça me permettra de vérifier la présence d'absence d'enregistrement (si le logiciel n'a pas tourné pendant quelques heures par exemple) et ainsi de les compléter. Le code est pas fini mais ça semble malgré tout bien plus rapide que ma solution n°1 : plusieurs requêtes.

    Merci pour ton aide en tout cas

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    De quoi cherches-tu à faire la moyenne ?
    la structure de table que tu as montré n'est pas très claire.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Candidat au Club
    Inscrit en
    Octobre 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Ba si par exemple je veux générer un graphique des températures de la sonde 8A000001C3A1E328 pour l'année 2009, je suis bien embêté car sur cette plage de temps représente 105120 températures enregistrées pour un seul capteur et que les "scripts" générant les graphiques ils trouvent que ça fait un peu beaucoup de données tout ça. Et encore ce n'est que les valeur pour l'axe y, il y en a autant à interpréter pour l'axe x (les dates et heures...). Du coup je veux comprimer mon année en 288 mesures et pour rester le plus juste possible chacune de ces mesures sera la moyenne de celle qu'elle est censé représenter.

    Je ne sais pas si je m'explique bien :-s

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu n'as pas du tout répondu a la question.
    Quelle est la structure de ta table ?

    Je suppose que " 8A000001C3A1E328" n'est pas le nom du champ alors ou y a t'il cette donnée ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Candidat au Club
    Inscrit en
    Octobre 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Si si c'est bien le nom d'un champ. Comme je l'ai mis dans mon premier message ma table resemble à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
       CHAMP            TYPE
      DATETIME        DATETIME
    Id_capteur1        float
    Id_capteur2        float
    Id_capteur3        float
    Id_capteurx        float
        ....           float
    Après pour être plus juste ma table c'est exactement ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
       CHAMP            TYPE
      DATETIME        DATETIME
    8A000001C3A1E328   float
    AC000001C3B40B28   float
    4D000001C3AB5F28   float
    5D000001C3AB5F28   float
    6D000001C3AB5F28   float
    7D000001C3AB5F28   float
    8D000001C3AB5F28   float
    Le champ DATETIME contient des valeurs au format : YYYY-MM-DD HH:MM:SS
    Les champs Id_capteur des températures au format XX.XX

    Un petit extrait qui parlera mieux que mes mots :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    CREATE TABLE IF NOT EXISTS `logtemp` (
      `DATETIME` datetime DEFAULT '0000-00-00 00:00:00',
      `8A000001C3A1E328` float DEFAULT NULL,
      `AC000001C3B40B28` float DEFAULT NULL,
      `4D000001C3AB5F28` float DEFAULT NULL,
      `5D000001C3AB5F28` float DEFAULT NULL,
      `6D000001C3AB5F28` float DEFAULT NULL,
      `7D000001C3AB5F28` float DEFAULT NULL,
      `8D000001C3AB5F28` float DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
     
    --
    -- Contenu de la table `logtemp`
    --
     
    INSERT INTO `logtemp` (`DATETIME`, `8A000001C3A1E328`, `AC000001C3B40B28`, `4D000001C3AB5F28`, `5D000001C3AB5F28`, `6D000001C3AB5F28`, `7D000001C3AB5F28`, `8D000001C3AB5F28`) VALUES
    ('2005-01-01 01:00:05', 25.22, 25.61, 26, 26.38, 26.77, 27.16, 27.54),
    ('2005-01-01 01:05:05', 25.36, 25.49, 25.92, 26.34, 26.78, 27.21, 27.63),
    ('2005-01-01 01:10:05', 25.42, 25.58, 26.05, 26.19, 26.67, 27.13, 27.59),
    ('2005-01-01 01:15:05', 25.52, 25.7, 26.19, 26.05, 26.55, 27.03, 27.51),
    ('2005-01-01 01:20:05', 25.6, 25.65, 26.31, 26.04, 26.41, 27.07, 27.41),
    ('2005-01-01 01:25:05', 25.62, 25.65, 26.29, 26, 26.35, 27, 27.32),
    ('2005-01-01 01:30:05', 25.48, 25.58, 26.28, 26.06, 26.48, 26.88, 27.27),
    ('2005-01-01 01:35:05', 25.38, 25.57, 26.35, 26.21, 26.4, 26.88, 27.35),
    ('2005-01-01 01:40:05', 25.37, 25.71, 26.33, 26.34, 26.37, 27.01, 27.32),
    ('2005-01-01 01:45:05', 25.43, 25.68, 26.2, 26.42, 26.35, 26.89, 27.42),
    ('2005-01-01 01:50:05', 25.32, 25.72, 26.08, 26.45, 26.22, 26.9, 27.27),
    ('2005-01-01 01:55:05', 25.39, 25.77, 26.12, 26.48, 26.24, 26.91, 27.27),
    ('2005-01-01 02:00:05', 25.36, 25.7, 26.02, 26.34, 26.38, 27.01, 27.34),
    ('2005-01-01 02:05:05', 25.39, 25.73, 26.04, 26.36, 26.4, 27.03, 27.36),
    ('2005-01-01 02:10:05', 25.43, 25.78, 26.1, 26.43, 26.48, 27.13, 27.47),
    ('2005-01-01 02:15:05', 25.33, 25.93, 26.19, 26.46, 26.44, 27.03, 27.62),
    ('2005-01-01 02:20:05', 25.3, 25.86, 26.09, 26.32, 26.57, 27.13, 27.68),
    ('2005-01-01 02:25:05', 25.37, 25.78, 26.16, 26.24, 26.65, 27.06, 27.76),
    ('2005-01-01 02:30:05', 25.4, 25.81, 26.19, 26.27, 26.68, 27.1, 27.8),
    ('2005-01-01 02:35:05', 25.52, 25.74, 26.24, 26.13, 26.66, 27.21, 27.72),
    ('2005-01-01 02:40:05', 25.53, 25.63, 26.32, 26.09, 26.81, 27.23, 27.62),
    ('2005-01-01 02:45:05', 25.56, 25.61, 26.25, 25.97, 26.95, 27.32, 27.66),
    ('2005-01-01 02:50:05', 25.64, 25.54, 26.34, 25.91, 27.05, 27.27, 27.77),
    ('2005-01-01 02:55:05', 25.64, 25.65, 26.26, 25.94, 27.19, 27.22, 27.83),
    ('2005-01-01 03:00:05', 25.65, 25.72, 26.39, 25.81, 27.12, 27.2, 27.87),
    ('2005-01-01 03:05:05', 25.6, 25.86, 26.42, 25.72, 27.22, 27.18, 27.73),
    ('2005-01-01 03:10:05', 25.64, 25.8, 26.57, 25.77, 27.18, 27.04, 27.8),
    ('2005-01-01 03:15:05', 25.66, 25.93, 26.5, 25.81, 27.33, 26.99, 27.85),
    ('2005-01-01 03:20:05', 25.65, 25.83, 26.63, 25.86, 27.29, 26.87, 27.96),
    ('2005-01-01 03:25:05', 25.51, 25.83, 26.78, 25.84, 27.41, 26.82, 28.06),
    ('2005-01-01 03:30:05', 25.54, 25.75, 26.9, 25.85, 27.32, 26.93, 28.06),
    ('2005-01-01 03:35:05', 25.47, 25.67, 26.81, 25.75, 27.21, 26.81, 27.93),
    ('2005-01-01 03:40:05', 25.52, 25.53, 26.78, 25.84, 27.11, 26.83, 28.07),
    ('2005-01-01 03:45:05', 25.54, 25.55, 26.8, 25.86, 27.13, 26.85, 28.1),
    ('2005-01-01 03:50:05', 25.59, 25.45, 26.86, 25.77, 27.2, 26.77, 28.19),
    ('2005-01-01 03:55:05', 25.65, 25.46, 26.82, 25.68, 27.06, 26.89, 28.26),
    ('2005-01-01 04:00:05', 25.8, 25.38, 26.82, 25.76, 26.92, 26.83, 28.28),
    ('2005-01-01 04:05:05', 25.85, 25.39, 26.78, 25.68, 26.8, 26.98, 28.39),
    ('2005-01-01 04:10:05', 25.72, 25.4, 26.92, 25.65, 26.9, 26.91, 28.45),
    ('2005-01-01 04:15:05', 25.7, 25.25, 26.96, 25.56, 27, 26.88, 28.3),
    ('2005-01-01 04:20:05', 25.82, 25.22, 27.08, 25.52, 27.12, 26.84, 28.41),
    ('2005-01-01 04:25:05', 25.72, 25.33, 27.08, 25.42, 27.23, 26.85, 28.32),
    ('2005-01-01 04:30:05', 25.61, 25.38, 26.98, 25.48, 27.14, 26.92, 28.24),
    ('2005-01-01 04:35:05', 25.48, 25.51, 27.07, 25.53, 27.14, 26.88, 28.15),
    ('2005-01-01 04:40:05', 25.55, 25.65, 26.96, 25.48, 27.15, 26.96, 28.29),
    ('2005-01-01 04:45:05', 25.7, 25.51, 26.83, 25.37, 27.05, 26.88, 28.22),
    ('2005-01-01 04:50:05', 25.62, 25.39, 26.98, 25.49, 27.13, 26.93, 28.23),
    ('2005-01-01 04:55:05', 25.68, 25.53, 26.89, 25.48, 27.2, 27.08, 28.15),
    ('2005-01-01 05:00:05', 25.71, 25.41, 26.93, 25.37, 27.25, 26.98, 28.21),
    ('2005-01-01 05:05:05', 25.78, 25.36, 27.07, 25.4, 27.16, 27.08, 28.19),
    ('2005-01-01 05:10:05', 25.63, 25.41, 27.02, 25.55, 27.21, 27.03, 28.34),
    ('2005-01-01 05:15:05', 25.61, 25.52, 26.95, 25.61, 27.08, 27.03, 28.47),
    ('2005-01-01 05:20:05', 25.57, 25.65, 26.94, 25.46, 27.1, 26.91, 28.52),
    ('2005-01-01 05:25:05', 25.61, 25.7, 26.99, 25.52, 27.16, 26.98, 28.59),
    ('2005-01-01 05:30:05', 25.64, 25.73, 27.01, 25.54, 27.18, 26.99, 28.6),
    ('2005-01-01 05:35:05', 25.59, 25.67, 26.93, 25.45, 27.07, 26.86, 28.46),
    ('2005-01-01 05:40:05', 25.45, 25.67, 27.06, 25.41, 27.16, 26.78, 28.51),
    ('2005-01-01 05:45:05', 25.6, 25.78, 27.12, 25.42, 27.13, 26.7, 28.39),
    ('2005-01-01 05:50:05', 25.45, 25.93, 27.26, 25.55, 27.26, 26.82, 28.5),
    ('2005-01-01 05:55:05', 25.59, 25.91, 27.4, 25.53, 27.39, 26.8, 28.63),
    ('2005-01-01 06:00:05', 25.74, 25.84, 27.43, 25.65, 27.29, 26.79, 28.72),
    ('2005-01-01 06:05:05', 25.6, 25.94, 27.45, 25.6, 27.17, 26.9, 28.76),
    ('2005-01-01 06:10:05', 25.71, 25.97, 27.4, 25.47, 27.27, 26.92, 28.7),
    ('2005-01-01 06:15:05', 25.73, 25.89, 27.53, 25.5, 27.2, 27.06, 28.73),
    ('2005-01-01 06:20:05', 25.71, 25.95, 27.67, 25.41, 27.19, 27.14, 28.58),
    ('2005-01-01 06:25:05', 25.6, 25.95, 27.79, 25.33, 27.22, 27.29, 28.53),
    ('2005-01-01 06:30:05', 25.61, 26.09, 27.75, 25.43, 27.14, 27.35, 28.41),
    ('2005-01-01 06:35:05', 25.54, 26.05, 27.74, 25.46, 27.2, 27.44, 28.54),
    ('2005-01-01 06:40:05', 25.57, 25.91, 27.74, 25.6, 27.17, 27.55, 28.48),
    ('2005-01-01 06:45:05', 25.72, 25.84, 27.76, 25.71, 27.06, 27.53, 28.55),
    ('2005-01-01 06:50:05', 25.67, 25.84, 27.81, 25.8, 27.2, 27.41, 28.48),
    ('2005-01-01 06:55:05', 25.65, 25.95, 27.74, 25.87, 27.09, 27.43, 28.63),
    ('2005-01-01 07:00:05', 25.78, 26.08, 27.87, 26, 27.22, 27.56, 28.76),
    ('2005-01-01 07:05:05', 25.77, 26.11, 27.95, 26.13, 27.09, 27.48, 28.73),
    ('2005-01-01 07:10:05', 25.64, 26, 27.85, 26.05, 27.02, 27.43, 28.7),
    ('2005-01-01 07:15:05', 25.61, 26.05, 27.97, 25.94, 26.99, 27.48, 28.83),
    ('2005-01-01 07:20:05', 25.69, 26.14, 28.07, 26.04, 27.1, 27.59, 28.95),
    ('2005-01-01 07:25:05', 25.69, 26.01, 28.13, 25.97, 27.22, 27.59, 28.82),
    ('2005-01-01 07:30:05', 25.84, 25.92, 28.11, 26.02, 27.35, 27.48, 28.78),
    ('2005-01-01 07:35:05', 25.83, 25.98, 28.23, 25.9, 27.29, 27.49, 28.86),
    ('2005-01-01 07:40:05', 25.97, 26.01, 28.15, 26.01, 27.29, 27.38, 28.95),
    ('2005-01-01 07:45:05', 26.03, 26.14, 28.05, 25.98, 27.33, 27.5, 28.83),
    ('2005-01-01 07:50:05', 26, 26.06, 27.91, 26.1, 27.4, 27.51, 28.79),
    ('2005-01-01 07:55:05', 25.89, 25.93, 28.06, 26.23, 27.51, 27.6, 28.86),
    ('2005-01-01 08:00:05', 25.9, 25.93, 28.06, 26.23, 27.5, 27.59, 28.85),
    ('2005-01-01 08:05:05', 25.98, 25.91, 27.95, 26.33, 27.5, 27.5, 28.97),
    ('2005-01-01 08:10:05', 25.89, 25.81, 27.84, 26.21, 27.36, 27.35, 29.12),
    ('2005-01-01 08:15:05', 26.01, 25.94, 27.98, 26.36, 27.21, 27.21, 28.99),
    ('2005-01-01 08:20:05', 25.99, 25.98, 28.08, 26.21, 27.11, 27.17, 29.01),
    ('2005-01-01 08:25:05', 25.89, 26.06, 28.03, 26.35, 27.12, 27.05, 29.08),
    ('2005-01-01 08:30:05', 25.83, 25.93, 28.13, 26.38, 27.07, 26.93, 29.19),
    ('2005-01-01 08:35:05', 25.7, 25.84, 28.08, 26.37, 27.11, 27.01, 29.31),
    ('2005-01-01 08:40:05', 25.56, 25.82, 28.17, 26.26, 27.11, 27.13, 29.23),
    ('2005-01-01 08:45:05', 25.49, 25.92, 28.14, 26.4, 27.12, 27, 29.28),
    ('2005-01-01 08:50:05', 25.64, 25.87, 28.19, 26.25, 27.08, 27.06, 29.14),
    ('2005-01-01 08:55:05', 25.64, 25.83, 28.11, 26.13, 26.93, 27.18, 29.22),
    ('2005-01-01 09:00:05', 25.59, 25.98, 28.15, 26.06, 27.06, 27.2, 29.13),
    ('2005-01-01 09:05:05', 25.52, 25.98, 28.22, 26.2, 26.96, 27.17, 29.17),
    ('2005-01-01 09:10:05', 25.63, 26.04, 28.23, 26.16, 26.87, 27.04, 29.3),
    ('2005-01-01 09:15:05', 25.54, 25.91, 28.37, 26.27, 26.94, 27.07, 29.29),
    ('2005-01-01 09:20:05', 25.65, 25.76, 28.27, 26.21, 26.93, 27.1, 29.37),
    ('2005-01-01 09:25:05', 25.77, 25.63, 28.21, 26.22, 27, 27.24, 29.27),
    ('2005-01-01 09:30:05', 25.9, 25.57, 28.27, 26.08, 26.98, 27.34, 29.18),
    ('2005-01-01 09:35:05', 25.76, 25.66, 28.29, 26.02, 26.85, 27.45, 29.21),
    ('2005-01-01 09:40:05', 25.66, 25.56, 28.19, 25.93, 26.76, 27.36, 29.12),
    ('2005-01-01 09:45:05', 25.75, 25.7, 28.06, 25.85, 26.72, 27.37, 29.18),
    ('2005-01-01 09:50:05', 25.75, 25.73, 28.12, 25.93, 26.83, 27.51, 29.03),
    ('2005-01-01 09:55:05', 25.69, 25.72, 28.15, 26.01, 26.96, 27.37, 28.94),
    ('2005-01-01 10:00:05', 25.8, 25.63, 28.16, 26.13, 26.87, 27.38, 29.06),
    ('2005-01-01 10:05:05', 25.72, 25.75, 28.17, 26.04, 26.98, 27.38, 28.95),
    ('2005-01-01 10:10:05', 25.77, 25.82, 28.26, 26.16, 27.12, 27.24, 28.83),
    ('2005-01-01 10:15:05', 25.75, 25.7, 28.35, 26.15, 27.01, 27.33, 28.82),
    ('2005-01-01 10:20:05', 25.83, 25.56, 28.29, 26.17, 27.12, 27.21, 28.78),
    ('2005-01-01 10:25:05', 25.93, 25.46, 28.3, 26.28, 27.03, 27.23, 28.91),
    ('2005-01-01 10:30:05', 25.97, 25.34, 28.33, 26.15, 27.05, 27.09, 28.92),
    ('2005-01-01 10:35:05', 26.06, 25.42, 28.39, 26.2, 27.08, 27.11, 28.92),
    ('2005-01-01 10:40:05', 26.11, 25.45, 28.4, 26.18, 27.04, 27.05, 28.84),
    ('2005-01-01 10:45:05', 26, 25.3, 28.52, 26.25, 27.07, 27.04, 28.79),
    ('2005-01-01 10:50:05', 25.93, 25.36, 28.4, 26.27, 27.22, 27.01, 28.9),
    ('2005-01-01 10:55:05', 25.91, 25.22, 28.45, 26.2, 27.34, 27.01, 28.78),
    ('2005-01-01 11:00:05', 25.76, 25.2, 28.57, 26.15, 27.43, 26.92, 28.83),
    ('2005-01-01 11:05:05', 25.67, 25.05, 28.68, 26.21, 27.44, 26.87, 28.73),
    ('2005-01-01 11:10:05', 25.77, 25.16, 28.81, 26.35, 27.59, 26.72, 28.6),
    ('2005-01-01 11:15:05', 25.69, 25.17, 28.91, 26.22, 27.55, 26.77, 28.74),
    ('2005-01-01 11:20:05', 25.82, 25.28, 28.99, 26.28, 27.59, 26.79, 28.74),
    ('2005-01-01 11:25:05', 25.73, 25.15, 29.12, 26.37, 27.64, 26.8, 28.7),
    ('2005-01-01 11:30:05', 25.83, 25.07, 29.18, 26.26, 27.66, 26.65, 28.68),
    ('2005-01-01 11:35:05', 25.97, 25.08, 29.06, 26.32, 27.59, 26.77, 28.67),
    ('2005-01-01 11:40:05', 26.1, 25.06, 29.2, 26.31, 27.44, 26.78, 28.53),
    ('2005-01-01 11:45:05', 26.15, 24.98, 29.31, 26.29, 27.29, 26.82, 28.44),
    ('2005-01-01 11:50:05', 26.21, 24.97, 29.22, 26.43, 27.36, 26.81, 28.35),
    ('2005-01-01 11:55:05', 26.24, 25.04, 29.34, 26.28, 27.26, 26.75, 28.34),
    ('2005-01-01 12:00:05', 26.37, 24.96, 29.37, 26.41, 27.19, 26.78, 28.48),
    ('2005-01-01 12:05:05', 26.34, 24.82, 29.43, 26.35, 27.33, 26.81, 28.4),
    ('2005-01-01 12:10:05', 26.19, 24.7, 29.34, 26.3, 27.31, 26.82, 28.44),
    ('2005-01-01 12:15:05', 26.04, 24.74, 29.25, 26.39, 27.28, 26.97, 28.46),
    ('2005-01-01 12:20:05', 26.09, 24.63, 29.3, 26.29, 27.33, 26.87, 28.52),
    ('2005-01-01 12:25:05', 26.11, 24.54, 29.41, 26.29, 27.21, 26.95, 28.49),
    ('2005-01-01 12:30:05', 26.11, 24.42, 29.48, 26.24, 27.36, 26.98, 28.4),
    ('2005-01-01 12:35:05', 26.22, 24.39, 29.62, 26.24, 27.22, 27.01, 28.28),
    ('2005-01-01 12:40:05', 26.12, 24.34, 29.61, 26.28, 27.31, 27.14, 28.15),
    ('2005-01-01 12:45:05', 25.99, 24.27, 29.6, 26.33, 27.43, 27.01, 28.08),
    ('2005-01-01 12:50:05', 25.84, 24.25, 29.72, 26.27, 27.5, 26.9, 28.1),
    ('2005-01-01 12:55:05', 25.84, 24.14, 29.8, 26.24, 27.35, 26.95, 28.03),
    ('2005-01-01 13:00:05', 25.91, 24.02, 29.8, 26.37, 27.29, 27.01, 27.91),
    ('2005-01-01 13:05:05', 25.88, 23.98, 29.74, 26.3, 27.21, 26.92, 27.81),
    ('2005-01-01 13:10:05', 26.02, 24.01, 29.66, 26.42, 27.22, 26.82, 27.91),
    ('2005-01-01 13:15:05', 26.08, 23.91, 29.7, 26.3, 27.24, 26.68, 27.91),
    ('2005-01-01 13:20:05', 26, 23.95, 29.85, 26.26, 27.31, 26.56, 27.9),
    ('2005-01-01 13:25:05', 26.05, 23.86, 29.93, 26.19, 27.41, 26.52, 28.03),
    ('2005-01-01 13:30:05', 26.02, 23.95, 29.84, 26.22, 27.26, 26.49, 28.13),
    ('2005-01-01 13:35:05', 25.93, 24.08, 29.87, 26.16, 27.41, 26.55, 28.09),
    ('2005-01-01 13:40:05', 25.88, 24.1, 29.95, 26.3, 27.3, 26.5, 28.1),
    ('2005-01-01 13:45:05', 25.9, 23.99, 30.01, 26.23, 27.4, 26.47, 28.25),
    ('2005-01-01 13:50:05', 25.86, 23.9, 29.86, 26.34, 27.45, 26.47, 28.2),
    ('2005-01-01 13:55:05', 25.77, 23.79, 29.73, 26.19, 27.59, 26.58, 28.29),
    ('2005-01-01 14:00:05', 25.8, 23.81, 29.75, 26.21, 27.61, 26.6, 28.31),
    ('2005-01-01 14:05:05', 25.95, 23.86, 29.69, 26.36, 27.66, 26.54, 28.46),
    ('2005-01-01 14:10:05', 25.83, 23.76, 29.6, 26.28, 27.59, 26.48, 28.41),
    ('2005-01-01 14:15:05', 25.91, 23.78, 29.55, 26.17, 27.72, 26.55, 28.42);

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je suis allé un peu vite dans mon format
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT DATE_FORMAT(`DATETIME`,  '%d/%m/%Y' ) , AVG(`8A000001C3A1E328`) 
    FROM logtemp
    WHERE `DATETIME`
    BETWEEN  '2010-01-01'
    AND  '2010-12-31'
    GROUP BY DATE_FORMAT(`DATETIME`,  '%d/%m/%Y' )
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Candidat au Club
    Inscrit en
    Octobre 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Hey mais c'est super tout ça. C'est que ça peu m'éviter une programmation longue et chiante (mais intéressante mal grès tout...). Donc la visiblement mysql me renvoie une moyenne par jour pour l'année demandée et ceci en 1 petite seconde.

    Mais, ça ne résout pas entièrement mon "problème". Avec cette requête on obtient "seulement" là moyenne jour par jour. Pour une année donc 365 (en fait 364 pour 2010) valeurs ce qui est très bien pour mon graphique mais je réduis la requête à un mois je n'ai alors plus que 28 ou 31 valeurs çà qui est un peu juste ...

    En tout cas maintenant il faudra que je prenne le temps de regarder le fonctionnement de ta requête sabotage, je suis sur qu'elle pourrait me reservire un jour. Merci beaucoup à toi :-)

  14. #14
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu as juste à faire varier le groupement.

    Ici, écris un peu differement pour un mois uniquement groupé par heure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DATE_FORMAT(`DATETIME`,  '%d/%m/%Y' ) ,   HOUR(`DATETIME`), AVG(`8A000001C3A1E328`) 
    FROM logtemp
    WHERE MONTH(`DATETIME`) = 3 AND YEAR(`DATETIME`) = 2010
    GROUP BY HOUR(`DATETIME`)
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/10/2012, 17h28
  2. miniature d'images stockés dans une base de donnée mysql
    Par plage dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 19/07/2011, 12h48
  3. [ODBC] [SQL-Server] affichage d'une image stockée dans une base sql server
    Par ahlemag dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 29/06/2006, 15h45
  4. [MySQL] Afficher une image stockée dans une base de données
    Par LuckySoft dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/04/2006, 12h57
  5. Contenu fichier stocké dans une base de données
    Par t_om84 dans le forum Général Python
    Réponses: 20
    Dernier message: 02/03/2006, 11h45

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