Je crée une requête qui vérifie que certaines contraintes sont satisfaites. Voici une version semi-travail en ce moment:Renvoie le résultat de la requête même si la clause WHERE n'est pas remplie
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
Cela fonctionne bien quand TaskId
existe dans la table Task
, mais je dois aussi retourner des valeurs si cette tâche n'existe pas (d'où le champ TaskExists
).
Pour une requête sur une tâche inexistante, je vous attendez à retourner
- TaskExists 0
- PressReady 0
- DownTaskAssignedToDisfferentMachine 0
Comment puis-je modifier ma requête pour retourner cela même quand il n'y a pas TaskId
existe?
Lorsque le 'taskId' n'existe pas dans cette table où d'autre existe-t-il? –
Cela pourrait être fait en utilisant peut-être une instruction SQL assez moche. Si j'étais vous, je laisserais juste le SQL comme ceci et implémenterais un [Null Object] (http://en.wikipedia.org/wiki/Null_Object_pattern) sur le côté C# qui a les attributs que vous avez énumérés. J'utiliserais l'objet nul au cas où le SQL ne retournerait aucun résultat – GolfWolf
Est-ce que TaskId est unique dans cette table? – Bulat