SQLite объединяет один столбец в несколько столбцов в другой таблице и выбирает

Вопрос:

У меня две (упрощенные) таблицы:

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

Оцените статью
TechArks.Ru
Добавить комментарий