Ordre par défaut dans un Select - SQL/NoSQL - Programmation
Marsh Posté le 14-11-2005 à 13:54:24
Depuis quand on ne peut pas utiliser order by et group by en même temps?
Marsh Posté le 14-11-2005 à 13:57:18
+1
tu fais tes GROUP BY nécessaires, et à la fin, le ORDER BY qui va bien.
Marsh Posté le 14-11-2005 à 14:03:06
malheureusement cela ne me donne pas le bon résultat car ca me classe le résultat final, et moi j'aimerais faire le order by avant le group by...
Marsh Posté le 14-11-2005 à 14:04:16
T'as pas moyen via un order by un peu plus sioux d'arriver à ce que tu veux?
Marsh Posté le 14-11-2005 à 14:11:50
Je ne sais pas comment faire.
En gros quand je fais mon select sur 2 table j'obtiens ceci
IDTable1 IDTable2
1 101
3 102
1 84
2 86
2 87
3 88
4 103
avec le group by j'obtiens cela
IDTable1 IDTable2
1 101
2 86
3 102
4 103
Alors que j'aimerais ceci
IDTable1 IDTable2
1 84
2 86
3 88
4 103
Marsh Posté le 14-11-2005 à 14:16:40
On peut voir la requête que tu fais? Je saisis pas comment tu arrives à ça...?
Marsh Posté le 14-11-2005 à 14:30:06
En gros ca donne :
SELECT IDTable1, IDTable2 FROM table2
JOIN table1 ON (table2.reftable1 = table1.IDTable1)
group by IDTable1
Marsh Posté le 14-11-2005 à 14:34:22
...et si tu faisais bêtement
select id_t1, min(id_t2)
from table2 join table1 on (...)
group by id_t1
Marsh Posté le 14-11-2005 à 14:38:39
Noisequik a écrit : En gros ca donne : |
Marsh Posté le 14-11-2005 à 14:40:00
je sais pas comment ça s'exécute, ça...m'étonnerait qu'il trie avant de faire le group by, et dans ce cas il ne triera que les mauvaises valeurs...
Marsh Posté le 14-11-2005 à 14:43:42
oui ta solution marche très bien Skeye ! Merci beaucoup, je ne m'y connais pas assez pour trouver des fonctions comme celles-ci !!
Maintenant il me reste plus qu'a remplacer id_t2 par min(id_t2) dans mon code ;-)
Marsh Posté le 14-11-2005 à 15:07:53
skeye a écrit : je sais pas comment ça s'exécute, ça...m'étonnerait qu'il trie avant de faire le group by, et dans ce cas il ne triera que les mauvaises valeurs... |
Nan c'est bon, j'ai (enfin ) compris ce qu'il voulait obtenir
Marsh Posté le 14-11-2005 à 17:46:06
Noisequik a écrit : Bonjour, |
Un ORDER BY fonctionne tres bien apres un GROUP BY
les enregistrements sans tris sont retournés dans l'ordre d'apparition à la sortie d'execution de la requete.
Marsh Posté le 14-11-2005 à 17:48:30
Noisequik a écrit : En gros ca donne : |
Et il sert à quoi ton GORUP BY. Tu ne groupes rien
Marsh Posté le 14-11-2005 à 18:00:28
C'est clair, n'importe quoi cette requête, elle revoie un IDTable2 aléatoire pour chaque IDTable1 ...
Marsh Posté le 14-11-2005 à 18:14:30
Bon, maintenant que j'ai donné la solution on peut p-e oublier, non?
Marsh Posté le 14-11-2005 à 13:50:11
Bonjour,
lors d'une simple requête select *
j'ai les résultats suivants :
Id ...
80 ....
99 ...
100 ...
101 ...
81 ...
82 ...
102 ...
Comme vous pouvez le voir, le numéro automatique n'est pas dans l'ordre.
Est-ce que l'affichage se fait en fonction de la date d'insertion ???
Comment faire pour modifier cet ordre ? Je ne peux pas utiliser "order by" car après j'utilise "group by" dans ma requête, sur plusieurs table...