Plusieurs Count et Group By sur une table

Plusieurs Count et Group By sur une table - SQL/NoSQL - Programmation

Marsh Posté le 11-07-2008 à 15:10:27    

Salut,
 
Sur un site j'ai besoin de faire une requète dans une seule table.
 
Table MaTable
Colonne one, two, three
 
one    two    three
145    548    632
423    145    846
145    758    214
218    805    145
 
Je voudrai pouvoir compter le nombre de fois ou 145 est dans la colonne one, dans la colonne two et la colonne three et affcher les résultats du genre
one    two    three
2       1       1
 
Pour le moment j'ai fais ca :
SELECT *, Count(one) AS un, Count(two) AS deux, Count(three) AS trois FROM MaTable WHERE one = 145 OR two = 145 OR three = 145 GROUP BY one AND two AND three
 
Seul problème, ca m'affiche :
4
au lieu de
2   1    1
 
Je sais pas comment distinguer les group by pour qu'il m'affiche les résultats séparé au lieu de me grouper le tout.
 
Merci de votre aide

Reply

Marsh Posté le 11-07-2008 à 15:10:27   

Reply

Marsh Posté le 11-07-2008 à 16:17:36    

selon ton sgbd, la requête ressemblera plus ou moins à ça :
 
select count(if one = 145 then 1 else 0 end) one, count(if two = 145 then 1 else 0 end) two, count(if three = 145 then 1 else 0 end) three
from tatable


Message édité par MagicBuzz le 11-07-2008 à 16:17:53
Reply

Marsh Posté le 11-07-2008 à 17:05:52    

sum au lieu de count non?


---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 11-07-2008 à 18:49:35    

oui en effet :D

Reply

Marsh Posté le 11-07-2008 à 20:52:15    

Merci pour les réponses,
 
En fait c'est pour un site php, je viens d'essayer sous phpmyadmin et ca marche pas.
 
Si je fais
SELECT Count(one) AS un FROM MaTable WHERE one = 145
 
J'ai bien 2 qui s'affiche.
Il me faudrai la même chose sauf sur les 3 colonne one two three
 
Au pire je peux trouver un moyen pour faire 3 requêtes (1 par colonne) mais c'est sans doute mieux si ca pouvait se faire en une.


Message édité par macfleid le 11-07-2008 à 21:09:57
Reply

Marsh Posté le 11-07-2008 à 21:58:29    

ben tu dois adapter la syntaxe "if then else end" à mysql. certainement à coup de "case one when 145 then 1 else 0 end"

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed