Plusieurs count dans une requete sql - SQL/NoSQL - Programmation
Marsh Posté le 22-09-2010 à 17:03:57
Quelle base de données (MySQL, Oracle, Access, ...) ? Je demande cela parce que la syntaxe varie un peu d'une base à l'autre. 
 
Déjà, est-ce que vous arrivé à obtenir un compteur ? 
 
Je pense que l'on peut simplifier la requête de la façon suivante, pour afficher le premier compteur : 
| SELECT statuses.st_name, count(*)  | 
 
Si ça marche, on verra ensuite pour le deuxième compteur.
Marsh Posté le 23-09-2010 à 08:55:42
Bonjour, 
La Base utilisée est une SQL server 2008r2 
J'étais déjà arrivé à affiché un compteur cohérent mais jamais les 2 en même temps(un des deux était tjs faux) 
 
La requêtes modifié me donne bien un compteur pour un des deux statuts. 
Reste à avoir le 2eme compteur aussi et réussir à le faire pour toutes les usines
Marsh Posté le 23-09-2010 à 09:15:59
Pour avoir les 2 compteurs,la modif simple est : 
SELECT statuses.st_name, count(*)  
FROM bugs,statuses, orgs  
WHERE bugs.bg_status = statuses.st_id   
AND orgs.og_id=19  
AND bugs.bg_org = orgs.og_id  
AND (statuses.st_id = 2 OR statuses.st_id = 5) 
GROUP BY statuses.st_name   
order by statuses.st_name 
 
ça fonctionne dans le cas d'une usine (19) particulière mais j'aimerai modifier la requete pour toutes les usines 
Quelqu'un voit une solution ???
Marsh Posté le 23-09-2010 à 09:26:39
Bon ben en cherchant 5 minutes j'ai réussi avec la requête suivante: 
SELECT orgs.og_name,statuses.st_name, count(*)  
FROM bugs,statuses, orgs  
WHERE bugs.bg_status = statuses.st_id    
AND bugs.bg_org = orgs.og_id  
AND (statuses.st_id = 2 OR statuses.st_id = 5) 
GROUP BY statuses.st_name,orgs.og_name 
order by orgs.og_name. 
 
J'aimerai maintenant modifier le format de sortie. 
Pour le moment j'ai 3 colonnes,une pour l'usine,une pour le statut,et une pour le compteur. 
J'aimerai avoir toujours 3 colonnes mais pas les mêmes. 
La première pour l'usine, la seconde pour le compteur des to-treat et la troisième pour le compteur des informations required. 
Quelqu'un sait comment faire ça???
Marsh Posté le 23-09-2010 à 16:50:53
Le OR peut se remplacer avantageusement par un IN (2, 5) 
Marsh Posté le 22-09-2010 à 15:58:21
Bonjour à tous.
Merci d'avance à tous ceux qui pourront m'aider.
J'ai donc besoin de faire une requete sur 3 tables différentes et de faire 2 counts dedans.
J'ai besoin de savoir pour chaques usines ,combien d'items sont dans l'état "To-Treat" (statuses.st_id=5) et dans l'état "Information Required"(statuses.st_id=2)
Pour l'instant j'ai fais un essais avec cette requette pour une seule usine(19) mais elle ne fonctionne pas
SELECT
SUM(CASE statuses.st_id WHEN 2 THEN 5 END),
SUM(CASE statuses.st_id WHEN 5 THEN 5 END)
FROM bugs,statuses
WHERE bugs.bg_status = statuses.st_id
AND bugs.bg_org IN(SELECT orgs.og_id FROM orgs WHERE orgs.og_id=19)
GROUP BY statuses.st_name
order by statuses.st_name
Si vous pourviez m'éclairer ce serait sympa .
Merci d'avance