Bonjour à tous.
Indulgence pour un débutant...
J'expose mon souci:
Dans une table contenant h (heure), rpedf (kw), datetime (format DATETIME), j'aspire à extraire rpedf suivant un NO between h(x) et h(y) (=>théoriquement sur 8h) afin d'afficher le résultat en [rpedfhc] sur une plage de 48 heures avec CURRENT_TIMESTAMP, trié par datetime ASC,
et
extraire rpedf suivant un between h(x) et h(y) (=>théoriquement sur 16h) afin d'afficher le résultat en [rpedfhp] sur une plage de 48 heures avec CURRENT_TIMESTAMP trié par datetime ASC,
le tout sur une seule ligne afin d'établir un graphique avec mes deux courbes rpedfhp, rpedfhc pour Google Chart.
(Il serait intéressant de pouvoir traiter ces deux données séparément afin de les différencier proprement dans le chart, vu que chaque colonne se voit appliquée un tarif différent...)
Pour le moment, en bricolant du "pas très propre" avec
J'ai tenté moult essais avec des AVG / GROUP BY ou des sous requêtes de ligne mais les résultats ne sont pas au rendez-vous.
Code php : 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 $numsql = "SELECT h FROM `enerduino` WHERE 'CURRENT_TIMESTAMP(), INTERVAL 48 HOUR' > datetime ORDER BY id ASC"; $hcsqlbw = "SELECT rpedf FROM `enerduino` WHERE h NOT BETWEEN '05' AND '20'"; $hpsqlbw = "SELECT rpedf FROM `enerduino` WHERE h BETWEEN '05' AND '20'"; $result = @mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); $resulthc = @mysql_query($hcsqlbw) or die('Erreur SQL !<br>'.$hcsqlbw.'<br>'.mysql_error()); $resulthp = @mysql_query($hpsqlbw) or die('Erreur SQL !<br>'.$hpsqlbw.'<br>'.mysql_error()); $i=0; $numsql=mysql_numrows($result); while($datas = @mysql_fetch_assoc($result)){ echo "\n['".$datas['h'].":".$datas['min']."', ".$datas['rppv'].", ".$datas['rpedf']."]"; //<= ne tenez pas compte de rppv, h et min qui s'affichent correctement et qui ne me posent aucun problème, mais je n'affiche pour le moment qu'une seule courbe [rpedf] alors que j'aimerai avoir mes deux courbes [rpedfhc] et [rpedfhp] if ($i < ($num - 1)) { echo ",\n"; } else { echo "\n"; } $i++; }
Même tenté avec
mais encore une fois échec avec un affichage sur une plage de 48h sans le reste jusqu'à NOW donc ne respectant pas le critère "'CURRENT_TIMESTAMP(), INTERVAL 48 HOUR' > datetime".
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 while(($datas = @mysql_fetch_assoc($result)) && ($datas1 = @mysql_fetch_assoc($resulthc)) && ($datas2 = @mysql_fetch_assoc($resulthp))) { echo "\n['".$datas['h'].":".$datas['min']."', ".$datas['rppv'].", ".$datas1['rpedf']."]".", ".$datas2['rpedf']."]";
Si un furieux du sql aurait une pensée intéressante qui lui passe par la tête, je suis volontiers preneur...
Pour info, serveur "perso" OVH.
N'hésitez pas à me dire s'il vous manque une info dans ce morceau de source.
Merci par avance. Cdt.
Partager