Мне нужно передать поле в подзапрос вместо использования JOIN, но большинство примеров в Интернете показывают только, как это сделать с помощью объединений.
Сценарий следующий:
У меня естьтаблица счетов в системе.Каждая учетная запись может выполнять задачи, которые могут потерпеть неудачу.Я хочу получить список учетных записей с настраиваемым столбцом «статус», который равен -1, если последние две задачи не выполнены.
Например,
SELECT Account.id, (
CASE WHEN (
(SELECT COUNT(*) FROM (
SELECT id, status FROM Task
WHERE Task.AccountId = Account.id // <-- Cannot access Account.id here
HAVING status < 0 // <-- only select failed tasks
ORDER BY id DESC
LIMIT 2
) as t1)
) < 2 THEN 1 ELSE -1 END
) as `status` FROM Account;
Вычисление статуса для каждой задачи являетсятяжелый запрос (не показан выше), поэтому я хочу вычислять состояние только для задач, принадлежащих запрашиваемым учетным записям.
Я пытался использовать пользовательские переменные, заменив Account.id на @AccountId, но яне думаю, что их можно использовать в подобном подзапросе.
Я не могу использовать JOIN в основной таблице Account, потому что я использую sequelize.Однако я могу использовать JOIN в подзапросе, если это поможет.