Quiero seleccionar ciertos valores de una tabla en función del resultado de la otra para los 7 resultados más recientes.

tbLimit: SELECT * from limits where id_device = ?

minTemp|maxTemp|minHum|maxHum
10      20      40     60

tbSensor: SELECT temperature, humidity, smoke, reading_time FROM sensor WHERE id_device = $id_device order by reading_time desc limit 7

temperature| humidity | smoke | reading_time
 15.20       30.20      555.12   15:44:52
 25.40       54.40     1900.51   15:40:31
 and so on for the first 7 results

Quiero formar una matriz que contenga cada valor que coincida con las condiciones de la primera tabla junto con el tiempo de lectura.

Por ejemplo: una matriz con temperaturas

¿Algún consejo sobre este?

-1
reyork 20 abr. 2020 a las 23:44

2 respuestas

select s.id_device, s.reading_time, s.smoke,
    l.minTemp, s.temperature, l.maxTemp,
    l.minHum, s.humidity, l.maxHum
from tbSensor s
inner join tbLimit l on l.id_device = s.id_device
where (
       s.temperature < l.minTemp
    or s.temperature > l.maxTemp
    or s.humidity < l.minHum
    or s.humidity > l.maxHum
)
0
Joel Coehoorn 20 abr. 2020 a las 20:50

Puede realizar una UNIÓN, como en:

select
  s.*
from sensor s
join limits l on s.temperature between l.minTemp and l.maxTemp
             and s.humidity between l.minHum and l.maxHum
where l.id_device = ?
0
The Impaler 20 abr. 2020 a las 20:50