Je suis en train de compter un certain nombre d'utilisateurs en fonction de leurs fichiers attribués et regroupés par les statuts de ces fichiers avec la requête suivante MySQL:Select CASE QUAND ALIAS avec COUNT ne pas retourner ZERO Valeurs
SELECT
(CASE WHEN F.status IS null THEN 'records'
WHEN F.status = 0 THEN 'prospects'
WHEN F.status >= 1 AND F.status < 4 THEN 'open'
WHEN F.status = 4 THEN 'archived' END) AS FileStatus,
count(DISTINCT U.id) as users
FROM
users_table U
LEFT OUTER JOIN files_table as F on (F.user_id = U.id or F.user_id IS NULL)
WHERE U.team = 1
GROUP BY FileStatus DESC
Mon problème est que si aucun utilisateur est ont un fichier avec un certain statut, la requête de retour coutume de cette ligne:
Pour l'instant, la requête renvoie des valeurs comme ceci:
+------------+-------+
| FileStatus | users |
+------------+-------+
| prospects | 5 |
| open | 10 |
| archived | 12 |
+------------+-------+
Mais je li ke d'avoir zéro ou des valeurs nulles apparaissent ainsi comme ceci:
+------------+-------+
| FileStatus | users |
+------------+-------+
| records | 0 |
| prospects | 5 |
| open | 10 |
| archived | 12 |
+------------+-------+
Je suis sûr que c'est super simple mais toute aide serait très appréciée ✌️
Merci pour ça! Bien qu'il existe un moyen de grouper 'UNION ALL SELECT' dans une plage de 1 à 3 pour 'open'? Considérant que la gamme pourrait changer au fil du temps. Quelque chose comme le 'F.status> = 1 ET F.status <4' dans ma requête originale? –
Voir mise à jour de ma réponse pour une gamme-alternative. – trincot
Après avoir testé cela dans plusieurs scénarios, il s'avère que la valeur de 'records' est toujours 0 ... 'records' étant ceux qui n'ont aucun fichier du tout. Impossible de comprendre pourquoi ... –