si le comte de la valeur est null mettre zéro - instruction sql select
N'arrive pas à obtenir ce travail. Si le nombre est nul je veux le mettre à zéro... d'autre mis à les compter. Je suis l'ajout de plusieurs chefs d'accusation dans une autre partie de mon code donc je ne peut pas contenir de valeurs null quand je fais cela.
$table ="
...
LEFT JOIN
(SELECT user_id, IF(count(user_id) = '(null)',0,count(user_id)) as t1count
FROM screenshot_logs
GROUP BY user_id) as t_screenshots
on t_screenshots.user_id = users.user_id
...
";
- Pourquoi
COUNT(...)
jamais de retourNULL
? Rappelez-vous aussiNULL
jamais "est égal à" rien, pas même de lui-même. C'est pourquoi il n'y aIS NOT NULL
de comparaison. - Le problème n'est pas dans la ligne de vue de la requête; le problème est que les références à
t1count
dans la requête externe peut retourner la valeur NULL lorsque la GAUCHE se JOINDRE à l'opération renvoie les lignes où il n'y a pas de "matching" ligne trouvé danst_screenshots
.
Vous devez vous connecter pour publier un commentaire.
Dans la requête externe, vous pouvez remplacer un
NULL
avec un zéro à l'aide de laIFNULL()
fonction, par exempleLe NUL de vous y retourné par la requête externe n'est pas de la vue intégrée de la requête. Le NUL est un résultat de "aucun match" trouvé par la
LEFT [OUTER] JOIN
opération.Si vous faites référence à
v.t1count
dans d'autres expressions dans la requête externe, vous pouvez remplacer ces références avecNULLIF(v.t1count,0)
ainsi.count()
?v
dans l'exemple pourrait contenir unCOUNT()
globale. J'ai omis un COUNT() expression dans ma réponse à souligner un point important... ce n'est pas le COUNT() expression qui retourne une valeur NULL. Le problème est que la jointure externe est à l'origine de la valeur NULL sera retourné.L'agrégat COUNT() retourne toujours une valeur.
Référence: N'COUNT(*) renvoient toujours à un résultat?
Vous ne souhaitez pas utiliser
=
là parce que null est!=
à tout. Essayez leifNull()
fonction.http://dev.mysql.com/doc/refman/4.1/en/control-flow-functions.html#function_ifnull
IFNULL(count(user_id),0)
ne pas faire n'importe quoi.COUNT(..) >= 0