Ordre par défaut dans un Select

Ordre par défaut dans un Select - SQL/NoSQL - Programmation

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...
 
 

Reply

Marsh Posté le 14-11-2005 à 13:50:11   

Reply

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?[:mlc]


---------------
Can't buy what I want because it's free -
Reply

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.

Reply

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...

Reply

Marsh Posté le 14-11-2005 à 14:04:16    

[:chacal_one333]
 
T'as pas moyen via un order by un peu plus sioux d'arriver à ce que tu veux?:o


---------------
Can't buy what I want because it's free -
Reply

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

Reply

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...? :??:


---------------
Can't buy what I want because it's free -
Reply

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
 

Reply

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
 
:??:


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 14-11-2005 à 14:38:39    

Noisequik a écrit :

En gros ca donne :
 
SELECT IDTable1, IDTable2 FROM table2
JOIN table1 ON (table2.reftable1 = table1.IDTable1)
group by IDTable1
ORDER BY IDTable2

[:proy]  

Reply

Marsh Posté le 14-11-2005 à 14:38:39   

Reply

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...


---------------
Can't buy what I want because it's free -
Reply

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 ;-)

Reply

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 :D ) compris ce qu'il voulait obtenir :o

Reply

Marsh Posté le 14-11-2005 à 17:46:06    

Noisequik a écrit :

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...


 
Un ORDER BY fonctionne tres bien apres un GROUP BY :ange:
 
les enregistrements sans tris sont retournés dans l'ordre d'apparition à la sortie d'execution de la requete.


---------------
MZP est de retour
Reply

Marsh Posté le 14-11-2005 à 17:48:30    

Noisequik a écrit :

En gros ca donne :
 
SELECT IDTable1, IDTable2 FROM table2
JOIN table1 ON (table2.reftable1 = table1.IDTable1)
group by IDTable1


 
Et il sert à quoi ton GORUP BY. Tu ne groupes rien :heink:


Message édité par cinocks le 14-11-2005 à 17:50:11

---------------
MZP est de retour
Reply

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 ...

Reply

Marsh Posté le 14-11-2005 à 18:14:30    

Bon, maintenant que j'ai donné la solution on peut p-e oublier, non?[:kbchris]


---------------
Can't buy what I want because it's free -
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed