Requete sql avec count()

Signaler
Messages postés
137
Date d'inscription
jeudi 18 juillet 2002
Statut
Membre
Dernière intervention
20 novembre 2016
-
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
-
Bonjour à tous

J'ai une table Mysq:


Champ |
Type |<!--Attributs |-->
Null |
|<!--Extra |-->
----

id_cat,
smallint(10), <!--, -->
Oui,
, <!--auto_increment, -->
----

nom_cat,
varchar(150), <!--, -->
Oui,
, <!--, -->
----

nbre_clics,
smallint(10), <!--, -->
Oui

je souhaiterais faire une requete Mysql qui compte le nombre d'enregistrement et qui me permet par la suite d'afficher le nombre de clics du type:


$select_cat
= "select count(id_cat),nbre_clics from categories" ;
$sql_select_cat =mysql_query($select_cat);

mais j'ai cette erreur:

Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause

j'aimerais réussir a faire cette requete plutot que de faire 1 requete pour compter le nombre de clics puis 1 autre pour afficher le nombre clics?

merci d'avance

9 réponses

Messages postés
137
Date d'inscription
jeudi 18 juillet 2002
Statut
Membre
Dernière intervention
20 novembre 2016

désolé pour le double post
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Salut...
Champ | Type |<!--Attributs |--> Null | |<!--Extra |--> ----
id_cat, smallint(10), <!--, --> Oui, , <!--auto_increment, --> ----
nom_cat, varchar(150), <!--, --> Oui, , <!--, --> ----
nbre_clics, smallint(10), <!--, --> Oui





Je ne suis pas expert en SQL. mais je trouve étonnant d'avoir un smallint à 10 !!! (10 c'est beaucoup) Mais peut-importe





La requète que tu veux faire est :

$res = mysql_query("select id_cat,nbre_clics from categories;");

$nb_cat = mysql_num_rows($res);





Je ne vois comment sortir en même temps le nombre de catégorie et le nombre de clics par catégorie...





A+
Messages postés
137
Date d'inscription
jeudi 18 juillet 2002
Statut
Membre
Dernière intervention
20 novembre 2016

Slt

non je ne veux pas utiliser mysql_num_rows mais count()

voilà le problème

@+
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Et ben tu le fais en deux fois :



select count(id_cat) from categories;



puis



select id_cat,nbre_clics from categories;






"je ne veux pas utiliser mysql_num_rows"

il ne faut pas être réfractère à ce point...
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
Salut,



essai ça :


SELECT nbre_clics, COUNT(a.id_cat) from matable as a, matable GROUP BY a.id_cat=a.id_cat

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
Oui, il faut appeler 2 fois sa table pour pouvoir faire un COUNT() lorsqu'il y a plusieurs enregistrements...

pis num_rows() n'a jamais tué personne... au contraire :o
Messages postés
137
Date d'inscription
jeudi 18 juillet 2002
Statut
Membre
Dernière intervention
20 novembre 2016

Slt à tous



merci pour vos réponses .je vais essayer



mais si je dit je ne veux pas utiliser mysql_num_rows c'est car
lorsqu'une personne depose un script avec ca, ca crie au scandale dans
les commentaires du script en disant qu'il ne faut pas l'utiliser!!



Je suis bete et discipliné moi! je lie ca donc je veux éviter de l'utiliser!!



merci à tous

@+
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
N'importe quoi :) une fonction c'est fait pour etre utilisée !
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Ouai, je confirme...



mieux vaut utiliser une petite fonction faite exprés pour plutôt que de
doubler une table dans une requète ! Niveau performance, y'a pas de
doute à avoir...





Sur quelles sources t'as lu des trucs pareils ? Histoire qu'on aille les insulter (gentiement bien sûr)





A+