Je veux compter le nombre total de commandes où la tâche est 1 à 3. Ensuite, si entrée1 est déjà compté, j'ai besoin de vérifier si le statut est en cours (tous les statuts qui ne sont pas terminés) . Je dois utiliser un CASE imbriqué ici Je ne veux pas l'inclure dans ma clause WHERE parce que je vais rejoindre plus de tables plus tard.Case imbriquée dans MySQL requête
Ceci est mon exemple de table:
ID + orderid + task + status
1 | 1 | 1 | Completed
2 | 2 | 1 | Saved
3 | 3 | 1 | Saved
4 | 1 | 2 | Completed
5 | 1 | 3 | Completed
Comme vous pouvez le voir dans le domaine des tâches qui ont Entrée1 le total de est 2 et achevé en cours est 1. Lorsque j'exécute ma requête que je reçois des résultats de 2 quand j'ai utilisé entry1 et le statut n'est pas sauvegardé mais j'obtiens aussi le résultat de 2 en enlevant le NOT. Mais quand j'ai utilisé ('COMPLETED'), j'obtiens le bon résultat. Alors, quel est le problème avec ('SAVED') dans mon code. J'espère que je n'ai rien tapé dans ma question.
Ceci est mon exemple de requête:
SELECT
COUNT(
CASE task
WHEN 1 THEN task ELSE NULL
END
AND
CASE `status`
WHEN NOT UPPER('SAVED') THEN `status` ELSE NULL
END
) e1_inprogress
FROM tableName;
Pour l'instant, je viens d'utiliser seule tâche 1, mais dans mon code réel Je dois aussi inclure toutes les tâches et tout statut COUNT. Je pense que c'est simple peut-être que je manque quelque chose alors s'il vous plaît corrigez-moi. Si vous avez un autre moyen s'il vous plaît laissez-nous savoir.
Je reçois maintenant .. Le problème est ma façon de penser de ne pas égale que je devrais utiliser < > ou! = au lieu de NOT ou <=>. Avec votre explication, je considérerai ceci comme ma réponse acceptée et avec votre code, je l'utiliserai à la place du mien pour raccourcir ma requête. Merci encore (je devrais d'abord étudier la base) – ace