Bonjour,
Ouha, je suis en plein dans le jointure
Synthèse:
J'ai plusieurs stations qui ont 1 à 5 capteurs. Toutes les x heures, la station prendre les mesures de tous ses capteurs. Ce que j'appelle une collection. Soit une collection de mesures
Je sauve dans ma table collections, une collection qui contint
* L'ID de la collection
* l'heures
* et d'autres information qui n'importe le sujet de ce post
Dans ma table measures , je suave mes mesures. Cette table à une jointure sur la table collections et la table sensors qui elle a à une liaison avec la table stations
Problème
Je peux très facile extraire les données pour un capteur (sensors)
et il va m'afficher toutes les mesures trouvées de tous les capteurs attachés à cette station.
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 $sql_measures ='SELECT st.id_station, m.value, c.ttn_m_time, se.id_sensor, 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); while($result_measures = $r_measures->fetch_assoc()) { echo '<pre>'; print_r($result_measures); echo '</pre>'; };
Le problème est que je en veux que les dernières mesures. Mais pas LA dernière mesure.
Ci-dessus, le print_r m'affiche ceci
J'aimerais que les mesures liés à la collection 57
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 Array ( [id_station] => 1 [value] => 18.0000 [ttn_m_time] => 2020-11-05 00:51:46 [id_sensor] => 1 [id_collection] => 57 ) Array ( [id_station] => 1 [value] => 28.0000 [ttn_m_time] => 2020-11-05 00:51:46 [id_sensor] => 4 [id_collection] => 57 ) Array ( [id_station] => 1 [value] => 18.0000 [ttn_m_time] => 2020-11-05 00:51:30 [id_sensor] => 1 [id_collection] => 56 ) Array ( [id_station] => 1 [value] => 29.0000 [ttn_m_time] => 2020-11-05 00:51:30 [id_sensor] => 4 [id_collection] => 56 ) Array ( [id_station] => 1 [value] => 18.0000 [ttn_m_time] => 2020-11-05 00:51:14 [id_sensor] => 1 [id_collection] => 55 ) Array ( [id_station] => 1 [value] => 26.0000 [ttn_m_time] => 2020-11-05 00:51:14 [id_sensor] => 4 [id_collection] => 55 ) Array ( [id_station] => 1 [value] => 18.0000 [ttn_m_time] => 2020-11-05 00:50:58 [id_sensor] => 1 [id_collection] => 54 ) Array ( [id_station] => 1 [value] => 18.0000 [ttn_m_time] => 2020-11-05 00:50:58 [id_sensor] => 4 [id_collection] => 54 ) Array ( [id_station] => 1 [value] => 18.0000 [ttn_m_time] => 2020-11-05 00:50:42 [id_sensor] => 1 [id_collection] => 53 ) Array ( [id_station] => 1 [value] => 18.0000 [ttn_m_time] => 2020-11-05 00:50:42 [id_sensor] => 4 [id_collection] => 53 ) Array ( [id_station] => 1 [value] => 18.0000 [ttn_m_time] => 2020-11-05 00:50:26 [id_sensor] => 1 [id_collection] => 52 ) Array ( [id_station] => 1 [value] => 18.0000 [ttn_m_time] => 2020-11-05 00:50:26 [id_sensor] => 4 [id_collection] => 52 ) Array ( [id_station] => 1 [value] => 18.0000 [ttn_m_time] => 2020-11-05 00:50:13 [id_sensor] => 1 [id_collection] => 51 ) Array ( [id_station] => 1 [value] => 18.0000 [ttn_m_time] => 2020-11-05 00:50:13 [id_sensor] => 4 [id_collection] => 51 ) Array ( [id_station] => 1 [value] => 18.0000 [ttn_m_time] => 2020-11-05 00:50:06 [id_sensor] => 4 [id_collection] => 50 ) Array ( [id_station] => 1 [value] => 18.0000 [ttn_m_time] => 2020-11-05 00:50:06 [id_sensor] => 1 [id_collection] => 50 )
Donc ceci ne fonctionne pas[id_collection] => 57
car il va m'afficher la toute dernière mesure.
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $sql_measures ='SELECT st.id_station, m.value, c.ttn_m_time, se.id_sensor, 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';
MAIS j'aimerais affichier toutes les mesures des capteurs attaché à une station, de la dernière collection.
Je pensais que ceci
ORDER BY c.ttn_m_time DESC LIMIT 1';
solutionnerait mon problème que je croyais que la limite s'appliquait à l'heure (ttn_m_time) qui appartient à une collection. Mais elas, le LIMIT s'applique bien à la dernière ligne extraite
Je me demande donc comment je peux "appliquer" LIMIT 1, de manière à que seulement la dernière collection est considérée, et qu'en suite, j'exploite les mesures prise lors de la dernière collection pour une station.
L'objectif est d'afficher sur ma home page, les dernières mesures pour chaque station.
Merci beaucoup pour vos lumières!!!
Partager