Page 1 sur 2

count + group by j'ai un blemme!!

Posté : 14 juin 2006, 12:48
par toto37
Bonjour,

J'ai une table ou je souhaite compter le nombre de personnes présente plusieurs fois dans cette meme table:

voici la requete que j'ai faite et je n'arrive pas a avoir ce que je veux, d'après des exemples cette syntaxe devrai fonctionner:

Code : Tout sélectionner

SELECT count(t.t_cid) as nb FROM transactions as t WHERE t.t_typeabo = 5 GROUP BY t.t_cid HAVING nb > 1
Seulement je recoi comme erreur le msg suivant : 'Invalid column name 'nb'.', la base de données utilisée est SQL SERVER.
Merci d'avance

Posté : 14 juin 2006, 12:59
par zeus
Il me semble qu'on ne peut pas utiliser les alias dans la clause Having pour SQL SERVER

Essaye de remplacer

Code : Tout sélectionner

HAVING nb > 1
par

Code : Tout sélectionner

HAVING COUNT(t.t_cid) > 1

count + group by j'ai un blemme!!

Posté : 14 juin 2006, 13:08
par toto37
yes ca marche, mais ca me renvoi pas le bon résultat.
Ca me renvoi les count de chaque personnes presente plus d'une fois.
Pour etre clair dans ma table j'ai une seule personne présente deux fois ds la table.La requete me renvoi 2 (le nombre de fois que la personne est dans lma table.)Je devrai recevoir 1

Posté : 14 juin 2006, 13:15
par zeus
est-ce que la personne qui est 2 fois dans la table a le même id ?

count + group by j'ai un blemme!!

Posté : 14 juin 2006, 13:17
par toto37
oui!
la structure de la table est la suivante:
champs 1: id transaction
champs 2: id de la personne

Posté : 14 juin 2006, 13:20
par zeus
Donc, ce que je voudrai savoir, c'est si t.t_cid est bine l'identifiant d'une personne dans la table transaction

count + group by j'ai un blemme!!

Posté : 14 juin 2006, 13:21
par toto37
oui tout à fait

Posté : 14 juin 2006, 13:25
par zeus
C'est normal, tu as 2 fois la même personne et si tu les comptes, tu as 2 occurences de cette personne donc COUNT(t.t_cid) retourne 2

Par contre, pour obtenir 1 ....

count + group by j'ai un blemme!!

Posté : 14 juin 2006, 13:26
par toto37
et oui c'est ce que j'essaye de faire depuis hier....

quel idée de compter le nombre de personne présentes plusieurs fois ds la même table!

Posté : 14 juin 2006, 13:28
par guilt92
Tu ne peux pas caser un DISTINCT quelque part ?

SELECT DISTINCT COUNT ca marche pas ?

Posté : 14 juin 2006, 13:30
par zeus
je verrais bien une solution

Tu retourne simplement la liste des id en doublon et, en PHP, tu vois compte les lignes
$str_requete  = "SELECT DISTINCT t.t_cid
  FROM transactions as t
  WHERE t.t_typeabo = 5
  GROUP BY t.t_cid
  HAVING COUNT(t.t_cid) > 1";
$o_result = mysql_query($str_requete);
if ($mysql_num_rows($o_result) > 0) {
  echo "Doublons présents";
} else {
  echo "Pas de doublons";
}

count + group by j'ai un blemme!!

Posté : 14 juin 2006, 13:45
par toto37
ayé!!!!

Merci pour ton exemple en php seulement tout mes traitements doivent etre fait en procédure stokées.... et oui car il s'agit dune procédure stokées éxécutée par un job ki tourne la nuit......
Si je pouvais utiliser php crois moi j'aurai bien été heureux!!

merci

SELECT count(DISTINCT t.t_cid) FROM transactions t
WHERE t.t_typeabo = 5
GROUP BY t.t_cid
HAVING count(t.t_cid) > 1

Posté : 14 juin 2006, 13:53
par zeus
:shock: ca marche un DISTINCT dans un COUNT ?

T'est pas sous MySQL, toi ...

EDIT : effectivement, je ne sais pas pourquoi je me suis mis en tête que tu travaillais sous MySQL vu que tu ne me l'a jamais dit

Bon bah désolé

count + group by j'ai un blemme!!

Posté : 14 juin 2006, 13:59
par toto37
sisi regarde plus haut j'ai ecri que je travaillais sous SQL SERVER :evil:

Posté : 14 juin 2006, 14:10
par zeus
Excuse moi j'ai du mélanger avec un autre post.

C'est ça d'aider plusieurs personnes en même temps :langue: