Pb requete group by / order by

manson34 Messages postés 7 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 17 janvier 2003 - 15 janv. 2003 à 17:46
manson34 Messages postés 7 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 17 janvier 2003 - 16 janv. 2003 à 00:44
je veux faire la requete suivante sur une table d'élèves, elle doit compter le nbre de fille par classe en classant les classes (divcod) de la maniere suivante : 61 62 63 64 51 52 53 54...

j'ai tapé ceci mais , delphi me renvoie une erreur de group by ou de fonctionnalités non supportés

Select divcod, count(elesexe), substring(divcod from 1 for 1) as niveau, substring(divcod from 2 for 2) as numero 
From f_ele 
Where elesexe="F" 
Group by divcod ,substring(divcod from 1 for 1), substring(divcod from 2 for 2) 
Order by niveau desc, numero asc; 


Select divcod, count(elesexe), substring(divcod from 1 for 1) as niveau, substring(divcod from 2 for 2) as numero 
From f_ele 
Where elesexe="F" 
Group by divcod ,niveau, numero,substring(divcod from 1 for 1), substring(divcod from 2 for 2) 
Order by niveau desc, numero asc;


qqun a t il une solution ?

4 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
15 janv. 2003 à 21:27
Dans l'aide en ligne sur le SQL local, il est dit, entre autres :
"Les valeurs dérivées (valeurs calculées) ne peuvent pas être utilisées comme base pour la clause GROUP BY.".


Je t'invite donc à consulter ce fichier situé dans "C:\Program Files\Fichiers communs\Borland Shared\BDE\localsql.hlp".

May Delphi be with you
0
manson34 Messages postés 7 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 17 janvier 2003
15 janv. 2003 à 21:42
Ok merci !
mais comment faire alors vu que le champ divcode correspondant au classe des eleves est du type 68 (pour la 6eme numero 8 par ex) et que le tri demandé est 61 62 63 64 51 52 53 54 etc...
je ne vois pas d'autres solutions....
0
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
15 janv. 2003 à 22:20
Il faudra alors le faire en deux fois. Dans un premier temps tu cherches les valeurs :
Select divcod, elesexe, substring(divcod from 1 for 1) as niveau, substring(divcod from 2 for 2) as numero 
From f_ele 
Where elesexe="F"


Il faut ensuite copier les résultats dans une table locale ( avec un TBatchMove ) puis effectuer la requète de groupage et de tri sur cette table locale.
Select divcode,count(elesexe), niveau, numero 
From TableLocale
Group by divcod 
Order by niveau desc, numero asc


--- :sleepy) Nono40@fr.st :sleepy) ---
Nouveau ---> Nono40.fr.st
0
manson34 Messages postés 7 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 17 janvier 2003
16 janv. 2003 à 00:44
merci bien ! je vais donc essayer ca ! c exaxtement ce que jevoulais faire, mais je ne connaissais pas le Tbatchmove !

merci !
0
Rejoignez-nous