faire un ORDER BY sur le résultat d'un COUNT? [SQL] - ASP - Programmation
Marsh Posté le 05-01-2004 à 12:11:24
duch a écrit : J'aimerais simplement renvoyer le ou les enregistrements les plus fréquents dans la table en fonction d'un champ
|
SELECT TOP 10 v.col, v.nbcol
from (SELECT col, count(col) AS NbCol FROM table GROUP BY col) v
order by nbcol
Marsh Posté le 05-01-2004 à 12:14:06
merci pour ta réponse tomlameche, mais y'a un truc que je capte pas, c'est quoi ce "v" qui se promène avant le ORDER BY?
EDIT : J'ai essayé, et ça ne fonctionne pô, le plus drole c'est que ça ne tiens pas compte du TOP 10 et me renvoi tous les enregistrements.
En fait ça viens peut-être de mon moteur de bdd (c'est un fichier .dbf, dBase IV)
Mais bon dans tous les cas NbCol est toujours = 1
Marsh Posté le 05-01-2004 à 15:34:35
bon ça marche comme ça :
SELECT TOP 10 col, NbCol
from (SELECT col, count(col) AS NbCol FROM table GROUP BY col) order by NbCol DESC
merci
Marsh Posté le 05-01-2004 à 15:36:55
le v c'est un alias, le résultat renvoyé par tout le bordel entre parenthèse s'appellera v dans le reste de la requête.
Marsh Posté le 05-01-2004 à 16:19:51
Système de Gestion de Base de Données
Sinon pour répondre tu pouvais faire une vue et trier le select sur la vue
Marsh Posté le 05-01-2004 à 16:25:30
gizmo a écrit : ... je lui demandais LEQUEL... |
Citation : En fait ça viens peut-être de mon moteur de bdd (c'est un fichier .dbf, dBase IV) |
lundi difficile, hein...
EDIT: à moins que tu veuilles la version du connecteur ODBC ?
Marsh Posté le 05-01-2004 à 16:31:02
ouais, lundi difficile
Malheureusement, je ne connais pas les possibilités de cette DB.
Marsh Posté le 05-01-2004 à 16:31:21
c'est ça que tu veux? :
Driver={Microsoft dBase Driver (*.dbf)};DriverId=277;DBQ=C:\Inetpub\wwwroot\xxxx;FIL=dBase IV
M'enfin vous prenez pas la tête, ça marche
Marsh Posté le 05-01-2004 à 17:29:36
oui, duch, ça marche, tant mieux.
c'est juste que je n'avais pas compris la question de gyzmo, à savoir s'il voulait juste connaitre le type de sgbd ou la version du driver...
En passant, ta réponse ne m'aurait pas beaucoup aidé...driverId=277, oui oui oui, c'est cela... (encore heureux que l'on voit que c'est le driver µ$)
devine ce que je viens de prendre dans mon frigo, c'est le 4è article sur la 2è rangée, tu peux me dire si c'est sucré ?
Marsh Posté le 05-01-2004 à 17:36:55
Tu manges du surimi à cette heure çi ? Ca fait tôt, non ?
Marsh Posté le 05-01-2004 à 17:51:24
comment t'as deviné ?
Marsh Posté le 06-01-2004 à 11:15:39
Rangé pareil chez moi
Marsh Posté le 06-01-2004 à 12:25:29
SELECT col, count(col) AS NbCol FROM table GROUP BY col ORDER BY count(col) DESC |
Ca amrche très bien...
Ou alors :
SELECT col, count(col) AS NbCol FROM table GROUP BY col ORDER BY 2 DESC |
Vous vous compliquez la vie pour pas grand chose
Marsh Posté le 06-01-2004 à 12:42:02
MagicBuzz a écrit :
|
Héhé, c'est ben ce que je me disai, mais j'avais pas de BDD sous la main pour vérifier et vu son post de départ, j'ai eu un doute !
J'ai honte
Marsh Posté le 06-01-2004 à 14:34:38
il faudrait que duch nous confirme, je suis d'accord avec toi, magicbuzz, mais bon, si c'est pas du 100% oracle, des fois, on a des surprises...(et même avec de l'oracle parfois...snif)
Marsh Posté le 06-01-2004 à 15:49:11
Chez moi ça marchais pô.
C'est pas du oracle mais du dBase IV avec les drivers standards de krosoft.
M'enfin ça marche
Marsh Posté le 05-01-2004 à 11:48:55
J'aimerais simplement renvoyer le ou les enregistrements les plus fréquents dans la table en fonction d'un champ
soit la requête suivante :
Problème, elle fonctionne sans le ORDER BY (en rouge) uniquement, mais si je vire le ORDER BY, je me retrouve avec une liste à rallonge de chiffres (les résultats de tous les COUNT), qui n'est pas facilement exploitable...
Si le ORDER BY fonctionnait, j'aurais qu'à faire SELECT TOP 10... pour récupérer les 10 enregistrements les plus fréquents
comment faire?