Каждый объект лота содержит соответствующий список рабочих заданий. Этим рабочим заданиям назначены задачи, которые структурированы по задаче, установленной на родительском участке лотов (фаза). Я пытаюсь получить обратно LOT_ID
и счет TASK_ID
, где TASK_ID
существует для условия where.
Проблема в том, что если TASK_ID
не найден, результирующий набор равен нулю, а LOT_ID
вообще не возвращается.
Я загрузил одну строку для LOT
, PHASE
и WORK_ORDER
в следующий SQLFiddle. Я бы добавил больше данных, но есть забавный ограничитель ... я имею в виду ограничитель символов для редактора.
SQLFiddle
SELECT W.[LOT_ID], COUNT(*) AS NUMBER_TASKS_FOUND
FROM [PHASE] P
JOIN [LOT] L ON L.[PHASE_ID] = P.[PHASE_ID]
JOIN [WORK_ORDER] W ON W.[LOT_ID] = L.[LOT_ID]
WHERE P.[TASK_SET_ID] = 1 AND W.[TASK_ID] = 41
GROUP BY W.[LOT_ID]
Запрос возвращает ожидаемый результат, когда идентификатор задачи найден (46), но нет результата, когда идентификатор задачи не найден (скажем, 41). В этом случае я ожидаю увидеть что-то вроде:
+--------+--------------------+
| LOT_ID | NUMBER_TASKS_FOUND |
+--------+--------------------+
| 500 | 0 |
| 506 | 0 |
+--------+--------------------+
У меня такое чувство, что его нужно поместить в подзапрос, а затем присоединить, но я не уверен, какой здесь будет синтаксис.
Моя истинная цель - иметь возможность передать список TASK_ID
и получить любые LOT_ID
, которые не совпадают, но сейчас я просто делаю запрос для каждой задачи, пока не смогу это выяснить.