count + group by j'ai un blemme!!

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : count + group by j'ai un blemme!!

par zeus » 14 juin 2006, 14:50

Tout a fait mais étant persuadé qu'il tournait sous un vieux MySql, je ne l'ai pas proposé

par Hubert Roksor » 14 juin 2006, 14:45

Si vous êtes parvenu à obtenir la liste des personnes présentes plusieurs fois alors vous êtes pratiquement arrivés au bout, il suffit juste de faire un COUNT(*) sur le résultat. Je pars du principe que cette requête te donne le nombre d'occurences de chaque personne dans la base de données, à condition que ce soit 2 ou plus:

Code : Tout sélectionner

SELECT count(t.t_cid) AS rows_cnt FROM transactions as t WHERE t.t_typeabo = 5 GROUP BY t.t_cid HAVING COUNT(t.nb) > 1
Compter le nombre de rows avec une table dérivée:

Code : Tout sélectionner

SELECT COUNT(nb) FROM ( SELECT count(t.t_cid) AS nb FROM transactions as t WHERE t.t_typeabo = 5 GROUP BY t.t_cid HAVING COUNT(t.nb > 1) ) AS tmp

par zeus » 14 juin 2006, 14:10

Excuse moi j'ai du mélanger avec un autre post.

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

count + group by j'ai un blemme!!

par toto37 » 14 juin 2006, 13:59

sisi regarde plus haut j'ai ecri que je travaillais sous SQL SERVER :evil:

par zeus » 14 juin 2006, 13:53

: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!!

par toto37 » 14 juin 2006, 13:45

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

par zeus » 14 juin 2006, 13:30

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";
}

par guilt92 » 14 juin 2006, 13:28

Tu ne peux pas caser un DISTINCT quelque part ?

SELECT DISTINCT COUNT ca marche pas ?

count + group by j'ai un blemme!!

par toto37 » 14 juin 2006, 13:26

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!

par zeus » 14 juin 2006, 13:25

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!!

par toto37 » 14 juin 2006, 13:21

oui tout à fait

par zeus » 14 juin 2006, 13:20

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!!

par toto37 » 14 juin 2006, 13:17

oui!
la structure de la table est la suivante:
champs 1: id transaction
champs 2: id de la personne

par zeus » 14 juin 2006, 13:15

est-ce que la personne qui est 2 fois dans la table a le même id ?

count + group by j'ai un blemme!!

par toto37 » 14 juin 2006, 13:08

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