[access] pb de requete SQL

Résolu/Fermé
rodrigue62 Messages postés 190 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 10 janvier 2011 - 21 avril 2006 à 15:35
 lilibarth - 8 janv. 2008 à 14:44
bonjour,
sous access lorsque j'essaye d'executer la requete suivante:

SELECT COUNT( DISTINCT ([TOURNEE].[NOM_CAMION])) AS [nbr location], COÛTS.COÛT_LOCATION, [nbr location]*[COÛT_LOCATION] AS [cout total],
FROM (CAMION INNER JOIN (COÛTS INNER JOIN CONCERNÉ_PAR ON COÛTS.ID_COÛTS = CONCERNÉ_PAR.ID_COÛTS) ON CAMION.NOM_CAMION = COÛTS.NOM_CAMION) INNER JOIN TOURNEE ON CAMION.NOM_CAMION = TOURNEE.NOM_CAMION
WHERE (((TOURNEE.ID_MOIS)=[entrer mois voulu]))
GROUP BY COÛTS.COÛT_LOCATION, TOURNEE.NOM_CAMION, TOURNEE.DATE;


ca me met:

Dans l'instruction SELECT, un mot réservé ou un argument est mal orthographié ou absent, ou la ponctuation est incorrecte.

Si quelqu'un a une idée de ou est mon erreur merci d'avance

11 réponses

rodrigue62 Messages postés 190 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 10 janvier 2011 30
18 mai 2006 à 11:50
salut c'est encore moi ;-)
je cherche quelqu'un a qui je pourrait envoyer par mail ma base de donnée, car en fait il y a une requete que j'essaye de faire sur plusieurs table en faisant des sommes sur plusieurs champs numeriques, mais ca me donne des resultats aberant, en fait j'ai l'impression que ca compte plusieurs fois les meme champ, j'ai essayé de plusierus manieres differentes mais rien a faire, ca fait 2 jours que je suis dessus, donc si qq1 pouvait y jeter un oeil et me dire ce qu'il en pense...
1
blux Messages postés 25978 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 avril 2024 3 287
18 mai 2006 à 15:39
denis point mail point list chez free point fr
0
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
10 mai 2007 à 20:06
Bonjour,
Je ch qqu'un qui puisse m'aider sur access.
Dans une requête, je voudrais pouvoir compter les lignes Date. Le problème c'est que les lignes comportant la même date doivent compter pour 1 jour dans mon réusltat, comment faire ?
Merci de votre aide précieuse.
1
blux Messages postés 25978 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 avril 2024 3 287
21 avril 2006 à 16:52
Salut,

as-tu essayé en ôtant tous les accents (surtout les majuscules) ?

Mais ça t'oblige à redéfinir tes tables...
0
rodrigue62 Messages postés 190 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 10 janvier 2011 30
24 avril 2006 à 08:01
Non c'est au niveau de la fonction DISTINCT qu'est le probleme, si je veux compter toute les fois ou le camion est apparu ca va mais en fait je veux compter les dates differentes auquels il est apparu, en fait si il faut que je compte dans le mois le nombre de jours ou le camion est utilisé dans le mois, si il est utilisé plusieurs fois au cour d'une meme journée ca ne compte qu'une fois.
En fait la je faisais ensuite un calcul, donc j'ai essyé de simplifier ma requete en n'essayant de trouver que le nombre d'utilistation du camion et ensuite j'utiserai cette requete dans une autre
j'ai donc la requete suivante:

SELECT Count(DISTINCT(TOURNEE.NOM_CAMION)) AS Nbr_location, TOURNEE.DATE
FROM TOURNEE
GROUP BY TOURNEE.DATE;

et ca me met comme erreur: fontion 'DISTINCT' non definie dans l'expression
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rodrigue62 Messages postés 190 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 10 janvier 2011 30
24 avril 2006 à 08:16
non le programme la compterai le nombre de camions differents par date ce qu'il me faut c'est

SELECT Count(DISTINCT(TOURNEE.DATE)) AS Nbr_location,TOURNEE.NOM_CAMION
FROM TOURNEE
GROUP BY TOURNEE.NOM_CAMION;

mais le resultat est le meme j'obtient la meme erreur
0
blux Messages postés 25978 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 avril 2024 3 287
24 avril 2006 à 09:00
Après tests, il semblerait que DISTINCT, en tant que prédicat ACCESS (comme TOP, ALL...), ne supporterait pas d'être 'encapsulé' dans un COUNT...

Ce qu'on peut faire, c'est enregistrer la requête avec le DISTINCT (sous le nom R1, par exemple), puis lancer une autre requête qui fera le count sur les résultats de R1 :
SELECT COUNT (R1.EXPR1) FROM R1;

Et là, ça marche...
0
rodrigue62 Messages postés 190 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 10 janvier 2011 30
24 avril 2006 à 09:15
Ok merci. et y a t-il moyen pour les champs non renseigné de renvoyer 0. Je m'explique, si au cours d'un mois un camion n'a effectué aucune date, ce camion n'apparaitra pas dans ma requete qui compte le nombre de dates effectuées, or je voudrais qu'il aparaisse avec la valeur 0 affectée
0
blux Messages postés 25978 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 avril 2024 3 287
24 avril 2006 à 09:38
Pour cela, tu as la fonction iif :

SELECT IIF(TOURNEE.DATE="","0",TOURNEE.DATE) FROM ...

Mais il faudra peut-être transformer TOURNEE.DATE en chaine de caractère...
0
rodrigue62 Messages postés 190 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 10 janvier 2011 30
24 avril 2006 à 11:16
Ok merci je connaissais la fonction IIF car je l'avais deja utilisée dans des champs calculés mais je savais pas que l'on pouvais l'utiliser dans des requêtes SQL.
Merci de ton aide et de ta patience.
0
blux Messages postés 25978 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 avril 2024 3 287
24 avril 2006 à 11:22
TOUTES (ou presque) les fonctions ACCESS peuvent être utilisées dans le SQL : format, len, mid, iif, cos, datepart...
0
Merci pour votre aide rpecieuse
la commande count(distinct) marche pr moi !
0