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)
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>';
			};
et il va m'afficher toutes les mesures trouvées de tous les capteurs attachés à cette station.

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
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
)
J'aimerais que les mesures liés à la collection 57
[id_collection] => 57
Donc ceci ne fonctionne pas
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';
car il va m'afficher la toute dernière mesure.

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!!!