Bonjour à tous,


Je sauve dans une table 'measures' les mesures prises de 2 stations.
Les mesures de la première station sont prises en même temps, mais pas en même temps que la deuxième station.

J'ai déjà une requête MySQL qui va extraire les mesures pour une station sélectionnée. Donc la je n'ai pas de problème car les mesures sont prises par séqnence (collectoion) et j'extraire les mesures par collection.

J'aimerais modifier cette requete pour afficher les dernières mesures de la premiere et de la deuxième, ou des futures nouvelles station, sachant que ces dernières mesures n'auront donc pas la même date.

Voici ma requetes tel qu'elle est et que je je souhiate modifier. Elle fonctionne dans l'état:

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
 
 
$clauseAND .= " AND stype.id_sensor_type IN (1) "; // Uniquement les mesures de la catégorie 1
$clauseAND2=' AND c.ttn_m_time >= "2018-08-15 15:06:00" AND c.ttn_m_time <= "2018-08-15 16:06:50"'; // les mesures entre ces dates. ca sera supprimer, car je veux les dernières mesures de chaques station.
	$sql_select = 'SELECT  se.sensor_longname, se.chart_pointStyle_id_chart_pointStyle, se.chart_pointRadius, se.chart_fill, se.chart_showLine, se.chart_borderWidth, se.chart_pointHoverRadius, se.id_sensor, 
		fi.field_name, st.station_name, st.station_longname, sfam.sensor_family_name, stype.measure_unit, stype.id_sensor_type, m.value, 
		c.id_collection,c.ttn_m_time,cs.chart_style_value, cp.chart_pointStyle_value,
		col_bg.color_name as bg_color,col_bg.color_value as bg_color_value,
		col_bd.color_name as bd_color,col_bd.color_value as bd_color_value
		FROM fields AS fi 
		INNER JOIN stations AS st ON fi.id_field = st.fields_id_field
		INNER JOIN sensors AS se ON st.id_station = se.stations_id_station
		INNER JOIN sensor_types AS stype ON se.sensor_types_id_sensor_type = stype.id_sensor_type
		INNER JOIN sensor_families AS sfam ON stype.sensor_families_id_sensor_family = sfam.id_sensor_family
		INNER JOIN measures AS m ON se.id_sensor = m.sensors_id_sensor
		INNER JOIN collections AS c ON m.collections_id_collection = c.id_collection
		INNER JOIN chart_backgroundColor AS cbgc on cbgc.id_chart_backgroundColor=se.chart_backgroundColor_id_chart_backgroundColor
		INNER JOIN colors AS col_bg on cbgc.colors_id_colors=col_bg.id_colors
		INNER JOIN chart_borderColor AS cbdc on cbdc.id_chart_borderColor=se.chart_borderColor_id_chart_borderColor
		INNER JOIN colors AS col_bd on cbdc.colors_id_colors=col_bd.id_colors
		INNER JOIN chart_style AS cs on se.chart_style_id_chart_style = cs.id_chart_style
		INNER JOIN chart_pointStyle AS cp on se.chart_pointStyle_id_chart_pointStyle = cp.id_chart_pointStyle
 
		WHERE se.sensor_active = 1 
		'.$clauseAND.'	
		'.$clauseAND2.'
		ORDER BY st.station_name ASC, c.ttn_m_time ASC';
Les mesures sont enregistrés dans une table 'measures'
Voici les champs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
id_measure - sensors_id_sensor  - collections_id_collection - value - created
Les mesures sont donc toutes enregistrées dans la même table et distimguées par l'ID du sensor et surtout, l'id de la collection (7-8 mesures par collections)

En gros, si je parlais à la base de donnée, je lui dirais
"Pour toutes les stations, extraire uniquement la dernière collection d'une station (une par station), pour un type unique (stype.id_sensor_type IN (1)), et affiche les valeurs des mesures mais aussi les valeurs relatives comme les couleurs, le piont style, le nom du sensor, la famile de sensor, etc."
Je ne sais pas si on peut modifier cette requête, ci-dessus, ou je dois appeler cette requete autant de fois qu'il y a de stations actifs. Comme par exemple, mettre cette de requête dans une loop, et la looper autant de fois qu'il y a de stations actifs

Voyez-vous mon soucis?
Ai-je donné assez d'information?