Renvoyer la valeur 0 avec COUNT

Résolu
dth0 Messages postés 8 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 28 septembre 2010 - 21 sept. 2010 à 10:18
dth0 Messages postés 8 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 28 septembre 2010 - 24 sept. 2010 à 09:14
Bonjour à tous

J'ai un souci avec la fonction COUNT, peut-être saurez vous m'aider:

En résumé, j'utilise un outil de gestion de parc (GLPI), j'ai donc une db contenant toutes les demandes d'intervention des users. Ces interventions sont classées par catégories (installation, dépannage etc). Il me faudrait le nombre d'interventions par catégorie. Simplement, il faudrait que le COUNT me renvoie 0 lorsqu'une catégorie ne contient aucune intervention. Là ça ne renvoie rien, ce qui décale tout d'une ligne lorsque je veux extraire les résultats de la requête ds un tableau excel. Voilà un exemple de requete:


"SELECT glpi_tracking_0.category, COUNT(*)
FROM glpi.glpi_tracking glpi_tracking_0
WHERE (glpi_tracking_0.date>={ts '" & Format$(ActiveSheet.date1.Value, "YYYY-MM-DD \0\0\:\0\0\:\0\0") & "'} And glpi_tracking_0.date<{ts '" & Format$(ActiveSheet.date2.Value, "YYYY-MM-DD \0\0\:\0\0\:\0\0") & "'}) 
GROUP BY glpi_tracking_0.category")


Si qqun a la solution à mon problème ce serait très sympa de m'en faire part!
A voir également:

2 réponses

dth0 Messages postés 8 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 28 septembre 2010
24 sept. 2010 à 09:14
Bonjour,

J'avais trouvé une solution similaire à la tienne:

SELECT c.name, Count(g.ID)   
FROM {oj glpi.glpi_dropdown_tracking_category c 
LEFT OUTER JOIN glpi.glpi_tracking g ON c.ID = g.category  AND (g.date>={ts '2010-08-01 00:00:00'} And g.date<{ts '2010-08-05 00:00:00'})}  
GROUP BY c.name


Avec une jointure gauche il ne faut pas laisser le where, mais dans ta requête j'imagine que ça passe!

Merci pour ta réponse en tout cas!
3
cs_gogniol Messages postés 7 Date d'inscription mardi 21 septembre 2010 Statut Membre Dernière intervention 7 mai 2011 1
23 sept. 2010 à 23:37
Bonjour,

Il faut faire une jointure.
J'imagine que tu dois avoir une table contenant toutes les catégories. Pour l'exemple appelons la : glpi.glpi_categories

La requête devient :
SELECT glpi_categories_0.category, COUNT(glpi_tracking_0.category)
FROM glpi.glpi_tracking glpi_tracking_0 
RIGHT JOIN glpi.glpi_categories glpi_categories_0 
ON glpi_categories_0.category = glpi_tracking_0.category 
WHERE (...) 
GROUP BY glpi_categories_0.category


Remarque : j'ai viré ta clause WHERE pour être plus lisible dans le forum, mais tu dois la rajouter pour ton résultat.

Cordialement
Gogniol
0
Rejoignez-nous