Menu

Question sur une nouvelle requête [Résolu]

Scuba1404 28 Messages postés mardi 6 juin 2017Date d'inscription 10 septembre 2018 Dernière intervention - 3 août 2018 à 13:22 - Dernière réponse : Scuba1404 28 Messages postés mardi 6 juin 2017Date d'inscription 10 septembre 2018 Dernière intervention
- 10 sept. 2018 à 22:25
bonjour,
J'ai une question, car je viens de créer une nouvelle requête que j'ai appelée Produits vendus v2. J'ai copié le SQL d'une autre qui fonctionne très bien mais dans laquelle il y a un paramètre qui doit être changé … donc j'ai copie les SQL dans la nouvelle et j'ai fait les changements nécessaires, mais lorsque je veux voir le résultat, le rang ne se calcule plus.

Voici le SQL qui fonctionne :
SELECT [Produits vendus].Année
  , [Produits vendus].[No du Stand (COE)]
  , [Requête - Stand No].[Stand No]
  , [Données stands].[Nom du Stand]
  , [Données stands].Label
  , Avg([Q1 - Saison].[Points (Q1)]) AS [MoyenneDePoints (Q1)]
  , Avg([Q2 - Origine].[Points (Q2)]) AS [MoyenneDePoints (Q2)]
  , Avg([Q3 - Label].[Points (Q3)]) AS [MoyenneDePoints (Q3)]
  , Avg([Q4 - Frais].[Points (Q4)]) AS [MoyenneDePoints (Q4)]
  , Avg([Requête - Bonus Malus].BonusMalus) AS MoyenneDeBonusMalus
  , Avg([Points (Q1)]+[Points (Q2)]+[Points (Q3)]+[Points (Q4)]+[BonusMalus]) AS TOTAL
  , Count([Produits vendus].[Nom du produit]) AS [CompteDeNom du produit]
  , DCount("*" ,"[Requête - Produits vendus]" ,"[TOTAL] > " & [TOTAL] & " AND [Année] = " & [Année])+1 AS Rang
FROM (([Données stands] INNER JOIN (([Q1 - Saison] 
INNER JOIN Produits 
  ON [Q1 - Saison].[Réponse (Q1)] = Produits.[Saison]) 
INNER JOIN ([Q5 - Bonus/Malus] INNER JOIN ([Q4 - Frais] INNER JOIN ([Q3 - Label] 
INNER JOIN ([Q2 - Origine] 
INNER JOIN [Produits vendus] 
  ON [Q2 - Origine].[Réponse (Q2)] = [Produits vendus].[Origine du produit]) 
  ON [Q3 - Label].[Réponse (Q3)] = [Produits vendus].[Label du produit]) 
  ON [Q4 - Frais].[Réponse (Q4)] = [Produits vendus].[Conditionnement du produit]) 
  ON [Q5 - Bonus/Malus].[No du Stand (COE)] = [Produits vendus].[No du Stand (COE)]) 
  ON Produits.[Nom du produit] = [Produits vendus].[Nom du produit]) 
  ON [Données stands].[No du Stand (COE)] = [Produits vendus].[No du Stand (COE)]) 
INNER JOIN [Requête - Bonus Malus] 
  ON ([Produits vendus].[No du Stand (COE)] = [Requête - Bonus Malus].Stand) 
  AND ([Produits vendus].Année = [Requête - Bonus Malus].Annee)) 
INNER JOIN [Requête - Stand No] 
  ON ([Produits vendus].[No du Stand (COE)] = [Requête - Stand No].Stand) 
  AND ([Produits vendus].Année = [Requête - Stand No].Annee)
GROUP BY [Produits vendus].Année
  , [Produits vendus].[No du Stand (COE)]
  , [Requête - Stand No].[Stand No]
  , [Données stands].[Nom du Stand]
  , [Données stands].Label
ORDER BY [Produits vendus].Année
  , Avg([Points (Q1)]+[Points (Q2)]+[Points (Q3)]+[Points (Q4)]+[BonusMalus]) DESC;


Mais pourquoi lorsque je désire changer le :
DCount("*","[Requête - Produits vendus]","[TOTAL] > " & [TOTAL] & " AND [Année] = " & [Année])+1 AS Rang 

avec le nouveau nom de la requête (soit Produits vendus v2) ça me renvoie que des #erreur ?

EDIT : Ajout des balises de code

D'avance merci pour le support !
Afficher la suite 

Votre réponse

26 réponses

yg_be 6476 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 21 septembre 2018 Dernière intervention - 4 août 2018 à 10:21
0
Merci
bonjour,
"que des #erreur": pour tous les champs, ou uniquement pour rang?
que donne la nouvelle requête si tu ne modifies pas le calcul du rang?
Scuba1404 28 Messages postés mardi 6 juin 2017Date d'inscription 10 septembre 2018 Dernière intervention - 19 août 2018 à 20:24
en demandant de partager mon fichier, c'est de te l'envoyer ? oui c'est possible dis-moi comment ?

Je suis assez novice dans ce domaine ;-))
yg_be 6476 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 21 septembre 2018 Dernière intervention > Scuba1404 28 Messages postés mardi 6 juin 2017Date d'inscription 10 septembre 2018 Dernière intervention - 19 août 2018 à 20:26
tu mets ton fichier à disposition quelque part sur internet: google drive, cjoint.com, ...
puis tu partages le lien vers ton fichier.
Scuba1404 28 Messages postés mardi 6 juin 2017Date d'inscription 10 septembre 2018 Dernière intervention - 19 août 2018 à 20:31
Voilà, j'espère que c'est tout bon ...

https://cjoint.com/c/HHtsFfDTBr2
yg_be 6476 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 21 septembre 2018 Dernière intervention > Scuba1404 28 Messages postés mardi 6 juin 2017Date d'inscription 10 septembre 2018 Dernière intervention - 19 août 2018 à 21:05
j'ai bien obtenu le fichier, merci.
je vois une première anomalie: la colonne BM2018 de la table Q5 - Bonus/Malus n'est pas alimentée: est-ce intentionnel?
par ailleurs, comme tu as INNER JOIN [Requête - Bonus Malus], cela a-t-il encore du sens d'avoir INNER JOIN ([Q5 - Bonus/Malus]?
Scuba1404 28 Messages postés mardi 6 juin 2017Date d'inscription 10 septembre 2018 Dernière intervention - 20 août 2018 à 21:36
Pour répondre à ta 1ère question, oui car nous n'avons pas encore décidé les bonus/malus que nous allons mettre

à ta 2ème question, euh j'admet que lorsque j'ai changé pour y inclure INNER JOIN [Requête - Bonus Malus] peut-être que j'ai laissé par mégarde ou ignorance le INNER JOIN ([Q5 - Bonus/Malus] qui n'apporte rien ou peut-être un problème.

Dans tous les cas, un grand merci pour ton aide
Commenter la réponse de yg_be
yg_be 6476 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 21 septembre 2018 Dernière intervention - 21 août 2018 à 19:54
0
Merci
voilà, je pense y être arrivé.
pour commencer, changer Requête - Bonus Malus, pour y avoir:
SELECT 2016 as Annee, [No du Stand (COE)] as Stand, BM2016 as BonusMalus 
FROM [Q5 - Bonus/Malus] 
UNION SELECT 2017 as Annee, [No du Stand (COE)] as Stand, BM2017 as BonusMalus 
FROM [Q5 - Bonus/Malus] 
UNION SELECT 2018 as Annee, [No du Stand (COE)] as Stand,
 iif(BM2018 is null,0, BM2018) as BonusMalus FROM [Q5 - Bonus/Malus];
cela va éviter des soucis causés par le fait que BM2018 n'est pas encore encodé. je pense que c'est ta seule vraie erreur. le reste des changements, c'est pour soulager Access, qui me semble avoir été dépassé par ce que tu lui demandes de faire (de la façon dont tu lui as demandé).
ensuite, faire une première nouvelle requête:
SELECT [Produits vendus].Année, [Produits vendus].[No du Stand (COE)], 
[Requête - Stand No].[Stand No], 
[Données stands].[Nom du Stand], [Données stands].Label, 
Avg([Q1 - Saison].[Points (Q1)]) AS [MoyenneDePoints (Q1)], 
Avg([Q2 - Origine].[Points (Q2)]) AS [MoyenneDePoints (Q2)], 
Avg([Q3 - Label].[Points (Q3)]) AS [MoyenneDePoints (Q3)], 
Avg([Q4 - Frais].[Points (Q4)]) AS [MoyenneDePoints (Q4)], 
Avg([Requête - Bonus Malus].BonusMalus) AS MoyenneDeBonusMalus, 
Avg([Points (Q1)]+[Points (Q2)]+[Points (Q3)]+[Points (Q4)]+[BonusMalus]) AS TOTAL, 
Count([Produits vendus].[Nom du produit]) AS [CompteDeNom du produit]
FROM (([Données stands] INNER JOIN (([Q1 - Saison] 
INNER JOIN Produits ON [Q1 - Saison].[Réponse (Q1)] = Produits.[Saison]) 
INNER JOIN ([Q4 - Frais] INNER JOIN ([Q3 - Label] INNER JOIN ([Q2 - Origine] 
INNER JOIN [Produits vendus] 
ON [Q2 - Origine].[Réponse (Q2)] = [Produits vendus].[Origine du produit]) 
ON [Q3 - Label].[Réponse (Q3)] = [Produits vendus].[Label du produit]) 
ON [Q4 - Frais].[Réponse (Q4)] = [Produits vendus].[Conditionnement du produit]) 
ON Produits.[Nom du produit] = [Produits vendus].[Nom du produit]) 
ON [Données stands].[No du Stand (COE)] = [Produits vendus].[No du Stand (COE)]) 
INNER JOIN [Requête - Bonus Malus] 
ON ([Produits vendus].[No du Stand (COE)] = [Requête - Bonus Malus].Stand) 
AND ([Produits vendus].Année = [Requête - Bonus Malus].Annee)) INNER JOIN [Requête - Stand No] 
ON ([Produits vendus].[No du Stand (COE)] = [Requête - Stand No].Stand) 
AND ([Produits vendus].Année = [Requête - Stand No].Annee)
GROUP BY [Produits vendus].Année, [Produits vendus].[No du Stand (COE)], 
[Requête - Stand No].[Stand No], [Données stands].[Nom du Stand], 
[Données stands].Label;

pour l'exemple, appelons-la y1
ensuite, faire une deuxième nouvelle requête:
SELECT *, DCount("*","y1","[TOTAL] > " & [TOTAL] & " AND [Année] = " & [Année])+1 AS Rang
FROM y1;
pour l'exemple, appelons-la y2
ensuite, la troisième requête, qui, je l'espère, donnera le résultat tant attendu:
SELECT *
FROM y2
ORDER BY Année, Rang;

cela donne quoi?
Scuba1404 28 Messages postés mardi 6 juin 2017Date d'inscription 10 septembre 2018 Dernière intervention - 23 août 2018 à 21:33
C'est top, tu as solutionné mon problème !!!! MERCI beaucoup
J'ai ce que j'attends comme résultat. J'avais compliqué les choses sans le savoir.

Il faut que je fasse maintenant des états basés sur tes nouvelles requêtes ;-))
yg_be 6476 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 21 septembre 2018 Dernière intervention > Scuba1404 28 Messages postés mardi 6 juin 2017Date d'inscription 10 septembre 2018 Dernière intervention - 7 sept. 2018 à 13:01
peux-tu alors marquer le sujet comme résolu?
Scuba1404 28 Messages postés mardi 6 juin 2017Date d'inscription 10 septembre 2018 Dernière intervention - 10 sept. 2018 à 22:25
oui merci beaucoup !
Commenter la réponse de yg_be