SQL: подзапрос в операторе выбора - PullRequest
0 голосов
/ 20 апреля 2020

Я хочу выбрать определенные значения из одной таблицы на основе результата другой для последних 7 результатов.

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

Я хочу сформировать массив, содержащий каждое значение, которое соответствует условиям в первой таблице вместе со временем чтения.

Например: массив с температурами

Любой совет по этому поводу?

Ответы [ 2 ]

0 голосов
/ 20 апреля 2020

Вы можете выполнить JOIN, как в:

select
  s.*
from sensor s
join limits l on s.temperature not between l.minTemp and l.maxTemp
              or s.humidity not between l.minHum and l.maxHum
where l.id_device = ?
0 голосов
/ 20 апреля 2020
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
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...