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