У меня две (упрощенные) таблицы:
TriggerSensor
:
id INTEGER
active INTEGER
TriggerLogic
:
programId INTEGER
ts1 INTEGER
ts2 INTEGER
ts3 INTEGER
ts4 INTEGER
В столбцах ts1-ts4 содержится идентификатор из таблицы TriggerSensor
.
Поэтому, добавляя строки TriggerLogic
я создаю программы с различными настройками датчиков.
Можно ли сделать
SELECT programId
FROM TriggerLogic
WHERE [all triggers are active]?
Что-то вроде
SELECT programId
FROM TriggerLogic l
INNER JOIN TriggerSensor s ON l.ts1 = s.id
AND l.ts2 = s.id
AND l.ts3 = s.id
AND l.ts4 = s.id
WHERE s.active = 1
но где результат возвращает только строки, где все четыре s.active=1
?
SELECT
выше не возвращает строк.
Вам нужно входить в таблицу TriggerSensor
4 раза
SELECT programId
FROM TriggerLogic l
INNER JOIN TriggerSensor s1 ON l.ts1 = s1.id AND s1.active = 1
INNER JOIN TriggerSensor s2 ON l.ts2 = s2.id AND s2.active = 1
INNER JOIN TriggerSensor s3 ON l.ts3 = s3.id AND s3.active = 1
INNER JOIN TriggerSensor s4 ON l.ts4 = s4.id AND s4.active = 1