SELECT Count

Eléphant du PHP | 223 Messages

09 mai 2007, 18:40

SAlut

voila jai un table Mail_Boxes --> ID IDDOMAIN Mail

Code : Tout sélectionner

++++ ID +++++ IDDOMAIN +++++++++ Mail +++++++ + 1 + 1 ++++ [email protected] + +++++++++++++++++++++++++++++++++++++++++ + 2 + 1 + [email protected] + +++++++++++++++++++++++++++++++++++++++++ + 3 + 2 + [email protected] + +++++++++++++++++++++++++++++++++++++++++ + 4 + 3 + [email protected] + +++++++++++++++++++++++++++++++++++++++++ + 5 + 4 + [email protected] + +++++++++++++++++++++++++++++++++++++++++ + 6 + 5 + [email protected] + +++++++++++++++++++++++++++++++++++++++++ + 7 + 5 + [email protected] + +++++++++++++++++++++++++++++++++++++++++
quand je fait :

Code : Tout sélectionner

$db = mysql_connect($serveur, $user, $passw); mysql_select_db('$base',$db); $select = 'SELECT COUNT(IDDOMAIN) FROM MAIL_BOXES '; $result = mysql_query($select) or die ('Erreur : '.mysql_error() ); $row = mysql_fetch_row($result); $total = $row[0] ; echo" $total";
cela me compte le iddomain donc Affiche 7
moi en fait je voudrais que total soit le nombre de id ou mail aillant le même IDDOMAIN
j'ai teste avec un GROUP BY IDDOMAIN ou GROUP BY MAIL ou GROUP BY IDcela m'affiche 1
commant faire pour pour que le resultat soit le nombre ID aillant le même IDDOMAIN

merci d'avance

ViPHP
ViPHP | 3607 Messages

09 mai 2007, 19:21

DISTINCT ?

Eléphant du PHP | 223 Messages

09 mai 2007, 20:13

comment ça DISTINCT

j'ai fait

$select = 'SELECT DISTINCT(IDDOMAIN) FROM MAIL_BOXES ';
et aussi

$select = 'SELECT count(DISTINCT(IDDOMAIN)) FROM MAIL_BOXES ';
mais pareil marche pas

help my

merci

lem
Eléphant du PHP | 108 Messages

09 mai 2007, 20:17

DISTINCT est une option, il n'y a pas besoin de parenthèses.

[EDIT]M'enfin on s'éloigne du PHP là quand même..[/EDIT]
Lem.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

10 mai 2007, 08:34

Il te faut en fait un mélange d'un peut tout ça... le distinct n'est pas utile dès lors où tu utilises le GROUP BY puisque les lignes identiques seront automatiquement regroupées :

Code : Tout sélectionner

SELECT iddomain, COUNT(*) AS total FROM mail_boxes GROUP BY iddomain
Tu vas ainsi ramener pour chaque iddomain le nombre 'total' d'enregistrement qui y sont associés dans ta table mail_boxes en les regroupant par iddomain ;)


... et c'est effectivement plus une question sql donc je déplace :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 223 Messages

10 mai 2007, 11:24

Sa marche Pas sa m'affiche toujour 1

Code : Tout sélectionner

$select ='SELECT IDDOMAIN , COUNT(*) AS total FROM MAIL_BOXES GROUP BY IDDOMAIN '; $result = mysql_query($select) or die ('Erreur : '.mysql_error() ); $row = mysql_fetch_row($result); $total = $row[0] ; echo"$total ";
J'arrive pas as comprendre PK
ma version de SQL MySQL - 5.0.27
ma PHP Version 5.1.6

si une personne as une idée voir plusieur
merci D'avance

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

10 mai 2007, 11:34

Simplement parce que ici :
$row = mysql_fetch_row($result); 
$total = $row[0] ; 
tu mets le premier élément de la première ligne retournée par ta requête dans ta variable $total, c'est à dire l'iddomain...

La requête que je t'ai donné va te retourner un résultat du type :

Code : Tout sélectionner

IDDOMAIN | TOTAL 1 | 5 2 | 2 4 | 18
A toi de lire le bon champ, et éventuellement de filtrer si tu veux un id en particulier :
$select ='SELECT iddomain, COUNT(*) AS total 
  FROM MAIL_BOXES 
  WHERE iddomain = 4
  GROUP BY iddomain'; 
$result = mysql_query($select) or die ('Erreur : '.mysql_error() ); 
$row = mysql_fetch_assoc($result); // fetch_assoc te permet d'utiliser les noms des colonnes.. c'est quand même plus pratique :)
$total = $row['total'] ; 
echo $total;
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 223 Messages

10 mai 2007, 17:03

Merci
voila comment j'ai fait samarche nickel

Code : Tout sélectionner

$db = mysql_connect($serveur, $user, $passw); mysql_select_db('$base',$db); $query = "SELECT count(*) as NbMail from MAIL_BOXES WHERE IDDOMAIN='$IDDOMAIN'"; $res = mysql_query($query); $NbMail = mysql_result($res, '0', 'NbMail'); echo" $NbMail ";
merci encore