Я создаю запрос, который обеспечивает выполнение некоторых ограничений. Вот пол-рабочего вариант прямо сейчас:Возвращает результат запроса, даже если предложение WHERE не встречается
SELECT CASE
WHEN TaskId IS NULL THEN 0
ELSE 1
END AS TaskExists,
CASE
WHEN IsDownTask = 0 AND TaskStatus = 63 THEN 1
WHEN IsDownTask = 1 THEN 1
ELSE 0
END AS PressReady,
CASE
WHEN IsDownTask = 1 AND MachineId <> 2710 THEN 1
ELSE 0
END AS DownTaskAssignedToDifferentMachine
FROM Task T
WHERE TaskId = 555555
Это прекрасно работает, когда TaskId
существует в Task
таблицы, но мне также нужно возвращать значения, если это задачи не существует (отсюда TaskExists
поля).
Для запроса на несуществующий задачи, я бы ожидать, чтобы вернуться
- TaskExists 0
- PressReady 0
- DownTaskAssignedToDisfferentMachine 0
Как я могу изменить мой запрос вернуть это, даже если нет TaskId
?
Когда 'taskId' не существует в этой таблице, где еще она существует? –
Это можно сделать, используя, возможно, довольно уродливый оператор SQL. Если бы я был вами, я бы просто оставил такой SQL и реализовал [Null Object] (http://en.wikipedia.org/wiki/Null_Object_pattern) на стороне C#, в которой перечислены атрибуты. Я бы использовал нулевой объект, если SQL не возвращает результат – GolfWolf
Является ли TaskId уникальным в этой таблице? – Bulat