ORDER BY avec count

ORDER BY avec count - SQL/NoSQL - Programmation

Marsh Posté le 07-01-2007 à 01:54:00    

Bonsoir,
 
Je voudrais que cette requête me donne l'expert ayant réalisé le plus d'expertises depuis le début de 2006, j'ai donc fait la requête suivante, mais ça ne classe pas les NombreExpertises, ça classe les experts par ordre alphabétique :
 
SELECT TOP 1 NomExpert, count(*) AS NombreExpertises
FROM Experts, Villes, Sinistres
WHERE Experts.SiteWebExpert=Villes.SiteWebExpert AND Sinistres.CodePostal=Villes.CodePostal AND Sinistres.Date>#01/01/2006#
GROUP BY Experts.NomExpert;
 
et quand je rajoute un ORDER BY, la requête devient :
 
SELECT TOP 1 NomExpert, count(*) AS NombreExpertises
FROM Experts, Villes, Sinistres
WHERE Experts.SiteWebExpert=Villes.SiteWebExpert AND Sinistres.CodePostal=Villes.CodePostal AND Sinistres.Date>#01/01/2006#
GROUP BY Experts.NomExpert
ORDER BY count DESC;
 
Mais comme tout à l'heure, ça ouvre une fenêtre avec "Entrez la valeur du paramètre
                                                                          Compte
                                                                          'Case à remplir' "
 
Comment faire ?

Reply

Marsh Posté le 07-01-2007 à 01:54:00   

Reply

Marsh Posté le 07-01-2007 à 02:30:38    

ORDER BY NombreExpertises :??:  
Si tu as renommé la colonne, autant utiliser ce nom [:proy]

Reply

Marsh Posté le 07-01-2007 à 02:43:38    

J'avais aussi essayé avec NombreExpertises ; ça ouvre la même fenêtre avec NombreExpertises à la place de Compte.
 
Tu aurais une idée pour résoudre mon problème ?

Reply

Marsh Posté le 07-01-2007 à 08:34:10    

Bonjour,
 
Access ouvre une fenêtre quand il voit une variable qu'il ne connait pas. Il demande alors quelle est sa valeur.
Quand tu écris "ORDER BY count DESC", Access, ne connait pas count.
count n'est pas un nom de colonne.
count(*) pourrait être compris comme étant un nom de colonne par certains SGBD, mais je ne suis pas certain qu'Access accepte cela. Il faudrait essayer "ORDER BY count(*) DESC".
 
Mais le plus simpe, comme l'a dit mrbebert, serait d'écrire "ORDER BY NombreExpertises"
Tu dis avoir essayé ça. Mais si Access a ouvert une fenêtre, c'était très probablement parce qu'il devait y avoir une petite erreur d'orthographe, par exemple NombreExpertise sans "s", ou autre chose du même genre. Il faut que le nom soit exactement le même que celui est indiqué au début du Select.

Reply

Marsh Posté le 07-01-2007 à 08:53:21    

Dans pas mal de SGBD, les alias (NombreExpertises ici par exemple) ne peuvent pas être utilisés au même niveau de requête ... seuls les alias dans les sous-requêtes sont bien compris en général.
 
Donc ici, ORDER BY count(*) devrait marcher ...

Reply

Marsh Posté le 07-01-2007 à 12:37:49    

Oui, effectivement ça marche, merci à tous.

Reply

Sujets relatifs:

Leave a Replay

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