[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
29
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
24070
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
20 mai 2022
3 190
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
24070
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
20 mai 2022
3 190
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
29
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
29
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
24070
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
20 mai 2022
3 190
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
29
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
24070
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
20 mai 2022
3 190
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
29
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
24070
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
20 mai 2022
3 190
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