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
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.
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>'; }
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
Le oriblème ci-dessus, c'est que ke fait que j'ajoite LIMIT 1, il m'affiche une message d'erreur
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>'; }
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.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
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
Partager