Rechercher : dans
Par :

[MySQL] question sur la fonction GROUP BY

Dernière réponse le 24 jun 2009 à 16:25:55 Nanda, le 7 mai 2007 à 11:01:09 
 Signaler ce message aux modérateurs

Slt à tous,

Pour aller droit au but, voici ma question:
Lorsqu'on fait un GROUP BY en SQL (j'utilise MySQL), est-il possible de recuperer les groupes que SQL a fait?

exemple : Pour une table
NOM Age
A 11
B 23
C 11
D 36

Si je demnde un GROUP BY Age, il me rend
11 A
23 B
36 D


Cependant Comme il a deja fait les groupes ca serait interessant de plutot obtenir quelque chose du style
11 A-->C
23 B
36 D

... Est ce possible ???
Merci..

Configuration: Windows XP
Firefox 1.5.0.11

Meilleures réponses pour « [MySQL] question sur la fonction GROUP BY » dans :
3D Secure / Verified by Visa / SecureCode: Qu'est-ce que c'est ? VoirDepuis octobre 2008, les banques et commerçants en ligne ont commencé à adopter le système 3DSecure pour les paiements sur Internet. Qu'est-ce que c'est ? 3DSecure est appelé "Verified by Visa" chez Visa, et "SecureCode" chez Mastercard. (Les logos...
[MySQL] Comment monitorer MySQL en temps réel VoirVous êtes administrateur d'une base de données MySQL et vous souhaitez analyser en temps réel le fonctionnement de MySQL afin de diagnostiquer les éventuels problèmes, suivre la charge de fonctionnement du serveur ? PhpMyAdmin permet de voir les...
MySQL - Installation sous Windows VoirPrésentation de MySQL MySQL est un Système de Gestion de Bases de Données (SGBD) fonctionnant sous Linux et Windows. Depuis la version 3.23.19, MySQL est sous Licence GPL (aussi bien sous Linux que Windows), ce qui signifie qu'il peut être utilisé...

1

Dalida, le 7 mai 2007 à 11:54:12

Salut,

pour le résultat, il ne te renvoie pas
11 A
11 C
23 B
36 D
plutôt ?

c'est ce qu'il sensé faire me semble-t-il.
[ Mathieu ]
Comprenne qui peut, succombe qui doit…

Répondre à Dalida

2

gisa mainty, le 30 mai 2007 à 10:21:25

Salut,

normalement, ca doit renvoyer
11 A
11 C
23 B
36 D

mais bizzarrement, Mysql supprime le second key 11, d'ou pblm.
Quelqu'un a une idée? du prq et aussi et surtout du comment faire pour avoir le resultat complet.

Merci

Répondre à gisa mainty

3

rachid, le 22 aoû 2007 à 12:14:32

Si tu veux obtenir
11 A
11 C
23 B
36 D

Alors utilise pluto un ORDER BY age

Répondre à rachid

4

Reivax962, le 22 aoû 2007 à 13:34:34

Non justement, group by X n'a AUCUNE raison de renvoyer deux champs X ayant la même valeur. Il est faux de dire que "normalement il est censé le faire".

En fait, normalement, il ne devrait même pas accepter cette requête car le champ Nom ne fait pas partie de la clause group by.

Pour obtenir

11 A
11 C
23 B
36 D

en gardant group by, il faut plutôt faire group by age, nom.

Sous sql server et d'autres, select * from table group by age ne fonctionnerait pas : il faudrait mettre uniquement select age from table group by age (ou rajouter des fonctions d'aggrégation, comme count(), sum(), min(), etc. )

Répondre à Reivax962

5

angelsmatt, le 31 déc 2007 à 16:08:04

A Reivax962 "MySQL a étendu l'utilisation de la clause GROUP BY. Vous pouvez utiliser des colonnes ou des calculs de l'expression SELECT qui n'apparaissent pas dans la clause GROUP BY"
cf documentation MySQL http://dev.mysql.com/doc/refman/5.0/fr/group-by-hidden-fields.html

Cordialement,
angelsmatt

Répondre à angelsmatt

6

Reivax962, le 1 jan 2008 à 13:28:07
  • +1

Ben oui, je sais bien !
Mais c'est spécifique au sgbd mysql et aucunement au langage sql.
Et c'est d'ailleurs fonctionnellement plutôt génant, parce que si certaines valeurs des colonnes que l'on rajoute changent selon les enregistrements regroupés, laquelle sera affichée ?

Répondre à Reivax962

7

Stef, le 9 fév 2008 à 15:32:56

Hello,

en Mysql c'est possible en écrivant :
select Age, GROUP_CONCAT(Nom) from A GROUP BY Age;

Si j'ai bien compris ta question...

Répondre à Stef

8

tita, le 13 jun 2008 à 15:39:05

Ma question est de savoir si avant d'utiliser GROUP BY X je suis forcé de sélectionner X comme attribut au niveau du sélect.
doi je faire?

exemple:sélect X
.
.
.
GROUP BY X


ou je pe faire

sélect Y,Z,W
.
.
.

GROUP BY X

Répondre à tita

9

Reivax962, le 16 jun 2008 à 08:58:04

Bonjour,
MySQL permet de faire un select y,z,w [...]

Je précise bien mysql, parce qu'avec MSSql, Oracle et d'autres, ce n'est pas possible.
En effet, il se pose le problème de quels valeurs sélectionner.
Imagine deux lignes dont les champs sont :

X | Y | Z
X | Y | Z'

Si tu fais
SELECT Y, Z from table group by X

Pour Y, pas de problème, c'est le même dans les deux cas. Donc il te reverra celui-là.
Mais pour Z, doit-il renvoyer Z ou Z' ?
Il me semble que MySQL renvoie le premier qu'il trouve.
Mais il y a une ambigüité, c'est la raison pour laquelle la plupart des SGBD refusent une telle instruction.

De façon plus générale, les GROUP BY sont censés être utilisés avec des fonctions d'agrégation : MAX, MIN, COUNT, etc.

Voilà :)

Xavier

Répondre à Reivax962

10

N@TALI, le 24 jun 2009 à 15:29:12

Bonjour,
j'ai un problème d'affichage d'enregistrement dans l'état se sortie access
par exemple:
j'ai un tableau access:

nom reference
ali 100
ali 103
ali 200
moh 050
moh 090
moh 102
selma 012
selma 090
yanis 080
je veux avoir ce resultat dans l'etat de sortie :
ali ..................... 100-103-200
moh .................. 050-090-102
selma ................ 012-090
yanis ................. 080
j'atends votre repence ....merci repense

Répondre à N@TALI

11

 Dalida, le 24 jun 2009 à 16:25:55

Salut,

ouvre un fil dans le forum approprié, merci !
[ Mathieu ]
Il y a sûrement des pandas pour ne dépendre de rien

Répondre à Dalida
Collection CommentÇaMarche.net