Bonjour,

J'ai des stations qui enregistrent des mesures. Chaque station a 3 capteur.
Quand une station prend un mesure c'est une collection (une collection de mesures)

Il y a 4 stations.

J'ai besoin de connaitre la date et l'ID de la dernière collection de chaque station.

Pour cela, j'ai fait ceci qui fonctionne

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
$sql_measures ='SELECT st.id_station, m.value, c.ttn_m_time, c.id_collection FROM stations AS st
			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 measures AS m ON se.id_sensor = m.sensors_id_sensor
			INNER JOIN collections AS c ON m.collections_id_collection = c.id_collection
			WHERE st.id_station = '.$collection['id_station'].'
			ORDER BY c.ttn_m_time DESC';
 
			$r_measures = $connect->query($sql_measures) or die($connect->error);
 
 
			while($result_measures = $r_measures->fetch_assoc())
			{
					echo '<pre>';
					print_r($result_measures);
					echo '</pre>';
			}
Mais le problème, il m'affiche toutes les mesures de chaque station en affichant en premier, les mesures de la collection la plus récente.

Ce que j'ai besoin c'est qu'il m'affiche la une ligne, soit la première.

J'ai donc essayé ceci (j'ai supprimé m.value, car je n'ai pas besoins des valeurs de toutes les collections, mais juste la date et l'ID de la dernière collection pour chaque station

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
$sql_measures ='SELECT st.id_station, c.ttn_m_time, c.id_collection FROM stations AS st
			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 measures AS m ON se.id_sensor = m.sensors_id_sensor
			INNER JOIN collections AS c ON m.collections_id_collection = c.id_collection
			WHERE st.id_station = '.$collection['id_station'].'
			ORDER BY c.ttn_m_time DESC LIMIT 1';
 
			$r_measures = $connect->query($sql_measures) or die($connect->error);
 
 
			while($result_measures = $r_measures->fetch_assoc())
			{
					echo '<pre>';
					print_r($result_measures);
					echo '</pre>';
			}
Le oriblème ci-dessus, c'est que ke fait que j'ajoite LIMIT 1, il m'affiche une message d'erreur
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY c.ttn_m_time DESC' at line 6
je pense que c'est du fait qu'un LIMIT ne peut pas fonctionner avec des JOIN tel que présenté, mais j'ai besoin de connaitre la dernière collection enregistrée.

Comment puis-je appliqué un LIMIT 1, sur une la table collections?
Comment modifiriez-vous ma requête, de manière à ce qu'il parcours les mesures de la dernière collection sauvée pour une station

J'espère avoir fourni assez d'information
Mercii