Erel69
206 (¯`·.__[T3aM.L1b3rTe©]__.·´¯)
Messages : 19 449 Inscrit le 07/11/01
Ville : Lyon
Non connecté
|
|
Posté le 18 juillet 2006 - 12 h 22 m 27 s |
|
|
Bon, j'expose mon problème.
J'ai donc une table, donc je veux afficher les enregistrements.
Certains de ces elements sont regroupés à l'affichage.
Dans ma requête, je trie mes éléments selon un index.
Donc en gros, j'ai
1. SELECT `mes_champs`
2. FROM `ma_table`
3. WHERE `mes_conditions`
4. GROUP BY `mon_champ_de_regroupement`
5. ORDER BY `mon_tri`;
Jusque là rien de compliqué.
J'obtiens bien ma liste, avec un seul élément affiché pour ceux qui sont groupés.
Seulement, j'aimerais récupéré un élément précis dans les groupes, donc pouvoir trié les résultats du group by. Et là je ne sais pas comment faire pour obtenir l'élément groupé que je désiré.
(Exemple : je trie le tout par rapport au nom, je vais obtenir pour un groupe l'element correspondant au premier nom, alors que je voudrais le plus récent)
Le tout sans changer le tri global bien sûr.
J'ai essayé avec des HAVING sur le group by, mais je n'ai rien obtenu
|
|
| |
Obscurité au-delà du crépuscule, pourpre au-delà du sang qui coule, enfoui dans le flot du temps, en ton haut nom, je jure fidélité à l'obscurité. Que les fous qui se dressent devant nous soient détruits, par le pouvoir que toi et moi possédons...
|
grabber
Coordinateur
MacBook Pro 2,4 Powered
Messages : 8 510 Inscrit le 06/03/02
Ville : Angers
Non connecté
|
|
Posté le 18 juillet 2006 - 15 h 24 m 20 s |
|
|
a mon avis faut passer par une sous requete non ?
|
|
| |
|
Erel69
206 (¯`·.__[T3aM.L1b3rTe©]__.·´¯)
Messages : 19 449 Inscrit le 07/11/01
Ville : Lyon
Non connecté
|
|
Posté le 18 juillet 2006 - 16 h 09 m 50 s |
|
|
Euh une sous requete permet de sélectionner des éléments pour une condition, mais je ne vois pas le rapport avec le tri
|
|
| |
Obscurité au-delà du crépuscule, pourpre au-delà du sang qui coule, enfoui dans le flot du temps, en ton haut nom, je jure fidélité à l'obscurité. Que les fous qui se dressent devant nous soient détruits, par le pouvoir que toi et moi possédons...
|
grabber
Coordinateur
MacBook Pro 2,4 Powered
Messages : 8 510 Inscrit le 06/03/02
Ville : Angers
Non connecté
|
|
Posté le 18 juillet 2006 - 16 h 13 m 28 s |
|
|
ah oui, je viens de relire, j'avais mal compris en effet
ben sinon moi je ferai en 2 fois, 1ere requete recup les groupes, 2eme requete les trie puis affichage, mais bon c'est pas top, il doit y avoir mieux...
|
|
| |
|
Lonewolf_v
The Dead LoneWolf - (-[S4n5.T3aM]-) - (-[T3aM.Be4Uf]-)
Messages : 17 213 Inscrit le 05/08/02
Ville : Grenoble
Non connecté
|
|
Posté le 18 juillet 2006 - 16 h 28 m 53 s |
|
|
bin un group by multiple ou j'ai pas compris la question?
|
|
| |
l'antre des loups
le blog de lonewolf
|
bernie38
Waldorf (le pote à Statler)
Messages : 11 391 Inscrit le 28/08/03
Ville : Claix
Non connecté
|
|
Posté le 18 juillet 2006 - 17 h 32 m 03 s |
|
|
erel, poste ta requête, si c'est du sql standard je pourrais peut-être t'aiguiller ?
parce que j'ai pas compris la question, ou dit autrement ça me semble tellement trivial que je reste coi... Donc je me dis que je n'ai certainement pas capté le pb !
|
|
| |
La Montagne n'est pas dangereuse : on ne peut qu'y perdre la vie, tandis qu'en ville on devient bête et méchant
Voltaire
|
Erel69
206 (¯`·.__[T3aM.L1b3rTe©]__.·´¯)
Messages : 19 449 Inscrit le 07/11/01
Ville : Lyon
Non connecté
|
|
Posté le 18 juillet 2006 - 17 h 33 m 07 s |
|
|
Wai t'as pas compris
On va faire un exemple :
Exemple à la con
|
|---|
| ID | NOM | GROUPE | | 1 | ABCD | 1 | | 2 | ACDE | 2 | | 3 | AAAB | 3 | | 4 | AABC | 2 |
Bon, imaginons maintenant une s"lection par ordre alpha, en groupant par groupe
On obtient :
Résultat obtenu
|
|---|
| ID | NOM | GROUPE | | 3 | AAAB | 3 | | 4 | AABC | 2 | | 1 | ABCD | 1 |
Mais voilà, parmis les lignes appartenant au groupe 2, je veux celle ayant le plus petit ID, donc :
Resultat que je veux
|
|---|
| ID | NOM | GROUPE | | 3 | AAAB | 3 | | 1 | ABCD | 1 | | 2 | ACDE | 2 |
|
|
| |
Obscurité au-delà du crépuscule, pourpre au-delà du sang qui coule, enfoui dans le flot du temps, en ton haut nom, je jure fidélité à l'obscurité. Que les fous qui se dressent devant nous soient détruits, par le pouvoir que toi et moi possédons...
|
bernie38
Waldorf (le pote à Statler)
Messages : 11 391 Inscrit le 28/08/03
Ville : Claix
Non connecté
|
|
Posté le 18 juillet 2006 - 17 h 38 m 43 s |
|
|
Le 18 juillet 2006 - 17 h 33, Erel69 a écrit :
Wai t'as pas compris 
On va faire un exemple :
Exemple à la con
|
|---|
| ID | NOM | GROUPE | | 1 | ABCD | 1 | | 2 | ACDE | 2 | | 3 | AAAB | 3 | | 4 | AABC | 2 |
Bon, imaginons maintenant une s"lection par ordre alpha, en groupant par groupe
On obtient :
Résultat obtenu
|
|---|
| ID | NOM | GROUPE | | 3 | AAAB | 3 | | 4 | AABC | 2 | | 1 | ABCD | 1 |
|
donc on va dire :
select id, nom, groupe from TABLE group by groupe order by nom;
Mais voilà, parmis les lignes appartenant au groupe 2, je veux celle ayant le plus petit ID, donc :
Resultat que je veux
|
|---|
| ID | NOM | GROUPE | | 3 | AAAB | 3 | | 1 | ABCD | 1 | | 2 | ACDE | 2 |
|
je commence à voir. Il faut sans doute utiliser la fonction min, un truc du genre :
select min(id), nom, groupe from TABLE group by groupe, nom order by nom;
ça te sortir pour chaque groupement (groupe, nom), l'ID minimum.
c'est pas garanti du tout (pas testé, chui à la maison) mais c'est dans l'esprit.
Edit : quand tu as une fonction du type min, tu dois grouper par toutes les autres colonnes.
|
|
| |
Message édité 1 fois, la dernière par bernie38 le 18 juillet 2006 - 17 h 39. |
| |
La Montagne n'est pas dangereuse : on ne peut qu'y perdre la vie, tandis qu'en ville on devient bête et méchant
Voltaire
|
Erel69
206 (¯`·.__[T3aM.L1b3rTe©]__.·´¯)
Messages : 19 449 Inscrit le 07/11/01
Ville : Lyon
Non connecté
|
|
Posté le 19 juillet 2006 - 11 h 51 m 39 s |
|
|
J'ai essayé en effet avec MIN() mais j'ai pas réussi
|
|
| |
Obscurité au-delà du crépuscule, pourpre au-delà du sang qui coule, enfoui dans le flot du temps, en ton haut nom, je jure fidélité à l'obscurité. Que les fous qui se dressent devant nous soient détruits, par le pouvoir que toi et moi possédons...
|
bernie38
Waldorf (le pote à Statler)
Messages : 11 391 Inscrit le 28/08/03
Ville : Claix
Non connecté
|
|
Posté le 23 juillet 2006 - 11 h 21 m 51 s |
|
|
tu n'as pas réussi : ça donne pas le résultat attendu ? ou la requete renvoie une erreur ?
|
|
| |
La Montagne n'est pas dangereuse : on ne peut qu'y perdre la vie, tandis qu'en ville on devient bête et méchant
Voltaire
|
Erel69
206 (¯`·.__[T3aM.L1b3rTe©]__.·´¯)
Messages : 19 449 Inscrit le 07/11/01
Ville : Lyon
Non connecté
|
|
Posté le 23 juillet 2006 - 13 h 28 m 04 s |
|
|
Pas d'erreur, mais ce n'est pas le bon résultat
|
|
| |
Obscurité au-delà du crépuscule, pourpre au-delà du sang qui coule, enfoui dans le flot du temps, en ton haut nom, je jure fidélité à l'obscurité. Que les fous qui se dressent devant nous soient détruits, par le pouvoir que toi et moi possédons...
|
bernie38
Waldorf (le pote à Statler)
Messages : 11 391 Inscrit le 28/08/03
Ville : Claix
Non connecté
|
|
Posté le 25 juillet 2006 - 12 h 58 m 54 s |
|
|
Le 23 juillet 2006 - 13 h 28, Erel69 a écrit :
Pas d'erreur, mais ce n'est pas le bon résultat
|
pourtant, selon le tableau des données que tu as posté et le tableau de ce que tu veux obtenir, ça me semble la bonne requête, non ? Tu obtiens quoi au juste ?
|
|
| |
La Montagne n'est pas dangereuse : on ne peut qu'y perdre la vie, tandis qu'en ville on devient bête et méchant
Voltaire
|
defrance
PI-nary rules
Messages : 704 Inscrit le 05/09/03
Ville : Lyon
Non connecté
|
|
Posté le 13 août 2006 - 09 h 55 m 04 s |
|
|
Salut, il y a une erreur dans l'exemple que tu donnes,
tu ne peux regrouper que sur des champs qui ont des valeurs identiques.
Ton regroupement donnerai alors
Résultat obtenu
|
|---|
| NOM | GROUPE | | AAAB | 3 | | AABC | 2 | | ABCD | 1 |
Maintenant si c'est le groupe 2 qui t'intéresse il faudra te fendre d'une seconde requette pour accèder au plus petit id
tu peux aussi filtrer directement sur le groupe 2 et demander le min de l'id là ca marche
|
|
| |
La connerie c'est la décontraction de l'esprit, c'est pour cela que de temps en temps je m'autorise à faire le con.
Serge Gainsbourg
|
grabber
Coordinateur
MacBook Pro 2,4 Powered
Messages : 8 510 Inscrit le 06/03/02
Ville : Angers
Non connecté
|
|
Posté le 14 août 2006 - 10 h 15 m 45 s |
|
|
ah ben voila, ca me fait p^laisir de voir que quelqu'un d'autre ferait ca en 2 requetes
alors erel ? t'as trouve une soluce pr faire en une seule finalement ?
|
|
| |
|