Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1184 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL] Group by et max.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MySQL] Group by et max.

n°230093
Sebastien
Posté le 18-10-2002 à 14:53:01  profilanswer
 

C'est interdit de faire ca ?
 
mysql> select max(count(initial))
    -> from users  
    -> group by initial;
ERROR 1111: Invalid use of group function

mood
Publicité
Posté le 18-10-2002 à 14:53:01  profilanswer
 

n°230097
antp
Super Administrateur
Champion des excuses bidons
Posté le 18-10-2002 à 14:55:54  profilanswer
 

je vois pas trop ce que tu veux faire
deja max et count ensemble c'est pas trop logique :heink:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°230098
tomlameche
Et pourquoi pas ?
Posté le 18-10-2002 à 14:57:17  profilanswer
 

Sebastien a écrit a écrit :

C'est interdit de faire ca ?
 
mysql> select max(count(initial))
    -> from users  
    -> group by initial;
ERROR 1111: Invalid use of group function




Bah vi, ça peut pas marcher ton truc ... Tu lui demande de faire un count sur un champ en regroupant par ce champs, c'est abusrde.
Tu veux faire quoi exactement ?

n°230100
mrbebert
Posté le 18-10-2002 à 14:58:07  profilanswer
 

Manifestement il veut pas, ce qui est logique.
essaie ca :
select count(initial) as total
from users  
group by initial
order by total DESC
limit 0,1;
 

n°230101
tomlameche
Et pourquoi pas ?
Posté le 18-10-2002 à 15:01:10  profilanswer
 

mrbebert a écrit a écrit :

Manifestement il veut pas, ce qui est logique.
essaie ca :
select count(initial) as total
from users  
group by initial
order by total DESC
limit 0,1;
 
 




 :eek2:  
Mais c'est completement absurde comme requete !
select count(qqchose) from truc group by qqchose va te renvoyer autant de 1 que tu as de ligne dans la table et c'est tout !
Ca m'etonnerai que ce soit ça qu'il veut ...

n°230102
Sebastien
Posté le 18-10-2002 à 15:02:41  profilanswer
 

Je veux simplement savoir kel est la redondance maximum des initiales

n°230103
mrbebert
Posté le 18-10-2002 à 15:04:15  profilanswer
 

tomlameche a écrit a écrit :

 
 :eek2:  
Mais c'est completement absurde comme requete !
select count(qqchose) from truc group by qqchose va te renvoyer autant de 1 que tu as de ligne dans la table et c'est tout !
Ca m'etonnerai que ce soit ça qu'il veut ...



:non:  
count(qqchose), ca te renvoie le nombre de qqchose qui ne sont pas à NULL (ici, ca revient au nombre de lignes)
Ce que tu indiques, ce serait count(distinct qqchose)
 
Si tu as 3 lignes ou qqchose est identique, elles seront groupées, et le count(qqchose) indiquera 3 :)


Message édité par mrbebert le 18-10-2002 à 15:05:10
n°230105
tomlameche
Et pourquoi pas ?
Posté le 18-10-2002 à 15:06:28  profilanswer
 

Sebastien a écrit a écrit :

Je veux simplement savoir kel est la redondance maximum des initiales
 




bah par exemple tu pourrai faire
select  initial, count(*)
from user
group by initial
order by count(*) desc
et récupéré la première ligne.

n°230108
tomlameche
Et pourquoi pas ?
Posté le 18-10-2002 à 15:07:44  profilanswer
 

mrbebert a écrit a écrit :

 :non:  
count(qqchose), ca te renvoie le nombre de qqchose qui ne sont pas à NULL (ici, ca revient au nombre de lignes)
Ce que tu indiques, ce serait count(distinct qqchose)
 
Si tu as 3 lignes ou qqchose est identique, elles seront groupées, et le count(qqchose) indiquera 3 :)  




D'accord avec toi dans le principe, mais ici tu regroupe par la même chose que ce que tu comptes ...
Scuze, en fait t'as raison.
 :jap:


Message édité par tomlameche le 18-10-2002 à 15:11:53
n°230109
Sebastien
Posté le 18-10-2002 à 15:10:11  profilanswer
 

Oui et non :-)
Oui en elle meme la requete comme ca peut se faire mais non car au finale c la partie d une requete imbriquée sous oracle.
 
Ma requete de depart fonctionne sous oracle mais pas sous mysql ce qu il me semble bizarre.
Et en oracle le LIMIT n hesiste pas

mood
Publicité
Posté le 18-10-2002 à 15:10:11  profilanswer
 

n°230110
tomlameche
Et pourquoi pas ?
Posté le 18-10-2002 à 15:11:15  profilanswer
 

Sebastien a écrit a écrit :

Oui et non :-)
Oui en elle meme la requete comme ca peut se faire mais non car au finale c la partie d une requete imbriquée sous oracle.
 
Ma requete de depart fonctionne sous oracle mais pas sous mysql ce qu il me semble bizarre.
Et en oracle le LIMIT n hesiste pas




Sous Oracle tu peux utiliser rownum.

n°230113
Sebastien
Posté le 18-10-2002 à 15:12:33  profilanswer
 

tomlameche a écrit a écrit :

 
D'accord avec toi dans le principe, mais ici tu regroupe par la même chose que ce que tu comptes ...




 
Bon on va t expliquer :-)
 
Nom Prenom Initial
Dupont Toto dt
Dupont Tata dt
Henri Toto ht
Assis Toto at
 
select initial,count(initial)
from users
group by initial
 
:
dt | 2
ht | 1
at | 1
 
Maintenant je veux simplement que la requete me renvoie 2 :-)

n°230114
Sebastien
Posté le 18-10-2002 à 15:12:56  profilanswer
 

tomlameche a écrit a écrit :

 
Sous Oracle tu peux utiliser rownum.




 
En fait c pour un ami on teste chaqu un de notre cote il me dit que ca a pas marché avec le numrow.


Message édité par Sebastien le 18-10-2002 à 15:14:41
n°230116
mrbebert
Posté le 18-10-2002 à 15:13:42  profilanswer
 

tomlameche a écrit a écrit :

 
D'accord avec toi dans le principe, mais ici tu regroupe par la même chose que ce que tu comptes ...
Scuze, en fait t'as raison.
 :jap:  



Et ???
Effectivement, un count(*) reviendrait peut être au même, mais c'est absolument pas faux de compter sur le même champ que pour regrouper.
Je dirais même que c'est logique :)

n°230120
Sebastien
Posté le 18-10-2002 à 15:19:08  profilanswer
 

Bon la requete qu il fait fonctionne en fait, seulement elle plante quand ca renvoit aucune ligne alors qu il essaye par tous les moyens d en retourner forcement une
 
donc on lache cette histoire d oracle je veux juste savoir prk un max(count()) marche pas sous mysql ^^

n°230121
tomlameche
Et pourquoi pas ?
Posté le 18-10-2002 à 15:20:40  profilanswer
 

Sebastien a écrit a écrit :

 
 
Bon on va t expliquer :-)
 
Nom Prenom Initial
Dupont Toto dt
Dupont Tata dt
Henri Toto ht
Assis Toto at
 
select initial,count(initial)
from users
group by initial
 
:
dt | 2
ht | 1
at | 1
 
Maintenant je veux simplement que la requete me renvoie 2 :-)




Faut bien relire les messages avznt de répondre !
J'ai déjà fait mon mea culpa ;-)

n°230124
joce
Architecte / Développeur principal
"BugHunter"
Posté le 18-10-2002 à 15:22:15  profilanswer
 

Sebastien a écrit a écrit :

Bon la requete qu il fait fonctionne en fait, seulement elle plante quand ca renvoit aucune ligne alors qu il essaye par tous les moyens d en retourner forcement une
 
donc on lache cette histoire d oracle je veux juste savoir prk un max(count()) marche pas sous mysql ^^



peut être parce que ta requète n'a aucun sens ? :o


---------------
Protèges carnets personnalisés & accessoires pour bébé
n°230126
Sebastien
Posté le 18-10-2002 à 15:23:09  profilanswer
 

--Message édité par tomlameche le 18-10-2002 à 15:11:53--  
 
A ce moment la g t en train de poste ma reponse

n°230129
Sebastien
Posté le 18-10-2002 à 15:23:55  profilanswer
 

joce a écrit a écrit :

peut être parce que ta requète n'a aucun sens ? :o




 
Et en quoi elle a aucun sens ?
Moi j ai appris a faire du sql pas à utiliser le SQL de tel ou tel sgbd.
Donc je ne veux pas utiliser le limit qui est propre a mysql sur une appli qui risque d etre transfere sur du oracle ou postgresql


Message édité par Sebastien le 18-10-2002 à 15:25:49
n°230131
tomlameche
Et pourquoi pas ?
Posté le 18-10-2002 à 15:24:24  profilanswer
 

Sebastien a écrit a écrit :

Bon la requete qu il fait fonctionne en fait, seulement elle plante quand ca renvoit aucune ligne alors qu il essaye par tous les moyens d en retourner forcement une
 
donc on lache cette histoire d oracle je veux juste savoir prk un max(count()) marche pas sous mysql ^^




Marrant ça. J'ai essayé la requete  
select max(count()) sous Oracle, et effectivement ca marche ... Pourtant, à lire la requete, ca m'a parru vraiment absurde ...
on en apprend tous les jours.
 :jap:  
Pour MySQL, désolé, je connais assez peu, je bosse que sous Oracle.

n°230761
joce
Architecte / Développeur principal
"BugHunter"
Posté le 19-10-2002 à 13:34:42  profilanswer
 

Sebastien a écrit a écrit :

 
 
Et en quoi elle a aucun sens ?
Moi j ai appris a faire du sql pas à utiliser le SQL de tel ou tel sgbd.
Donc je ne veux pas utiliser le limit qui est propre a mysql sur une appli qui risque d etre transfere sur du oracle ou postgresql




au temps pour moi, après relecture de la requète ca a un sens :)


---------------
Protèges carnets personnalisés & accessoires pour bébé
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL] Group by et max.

 

Sujets relatifs
Est-ce qu'un die effectue un mysql_close() tout seul ?[PHP-MYSQL]Conversion date
[MySQL] Gagner en rapidité en migrant de MySQL 3.23 vers MySQL 4 ?[Php/MySQL] Pb, pas de retour à la ligne quand je reccupère la BDD ...
[PHP/MySQL] Je ne comprends pas ce qui cloche ds mon script...[PHP + MySQL] Comment envoyer " l'etat " d'une checkbox ds une BDD ?
[PHP + MySQL] C'est possible de faire un site mirroir ?[MySQL] Comment faire pour déplacer ...
[MySQL]Order By + Group By[MySQL]Trier un GROUP BY
Plus de sujets relatifs à : [MySQL] Group by et max.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR