Signaler

Choisir un nombre de point par rapport à l'année [Résolu]

Posez votre question Scuba1404 14Messages postés mardi 6 juin 2017Date d'inscription 21 octobre 2017 Dernière intervention - Dernière réponse le 21 oct. 2017 à 11:46 par yg_be
Voilà, j'ai développé une base de donnée pour recenser des réponses sur la provenance de données des stands de notre manifestation. Mon problème est que par année on défini des bonus/malus, ce qui veut dire que par exemple pour 2016, le stand a un bonus et pour 2017 un malus.

Comment faire pour que dans la note moyenne, il soit pris en compte pour la note 2016 ce qui a été défini et pour 2017 aussi.

Pour l'instant je ne peux tenir compte que d'une note.

si besoin je peux fournir des précisions.
Merci en avance pour l'aide
Utile
+0
plus moins
bonjour, je pense en effet qu'il serait utile que tu nous donnes plus d'information.
si tu veux adapter une requête, ce serait bien de la partager.
Donnez votre avis
Utile
+0
plus moins
Bonjour,

Voici le code SQL qui reprends la valeur de la table Q5 - Bonus/Malus basé sur le numéro du stand. Mais il n'y a pas la notion de l'année que je ne sais comment l'inclure :

SELECT [Données stands].[No du Stand (COE)], [Données stands].[Nom du Stand], [Produits vendus].Année, [Produits vendus].[Nom du produit], [Q1 - Saison].[Points (Q1)], [Q2 - Origine].[Points (Q2)], [Q3 - Label].[Points (Q3)], [Q4 - Frais].[Points (Q4)], [Q5 - Bonus/Malus].[Points (Q5)]
FROM [Q5 - Bonus/Malus] INNER JOIN ([Q4 - Frais] INNER JOIN ([Q3 - Label] INNER JOIN ([Q2 - Origine] INNER JOIN ([Q1 - Saison] INNER JOIN (Produits INNER JOIN ([Données stands] INNER JOIN [Produits vendus] ON [Données stands].[No du Stand (COE)] = [Produits vendus].[No du Stand (COE)]) ON Produits.[Nom du produit] = [Produits vendus].[Nom du produit]) ON [Q1 - Saison].[Réponse (Q1)] = Produits.Saison) 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)];


Et voici le début de ma table Q5 - Bonus/Malus :

http://img-19.ccm2.net/pbENT2RO7O5xTwljWLQZ9gySlWw=/a7fdcd96b89848e09c81f25d18630cdd/tmp/__Base_de_donnees-_C__Users_verop_Do.png

Devrais-je inclure encore quelque chose pour que tu puisses m'aider ?

D'avance merci
yg_be 3794Messages postés lundi 9 juin 2008Date d'inscription ContributeurStatut 17 novembre 2017 Dernière intervention - 8 oct. 2017 à 22:38
pourquoi écris-tu "il n'y a pas la notion de l'année"? quel est le troisième champ retourné par la requête?
il serait sans doute utile que tu donnes un exemple de ce que tu veux obtenir, et que tu fasses référence aux champs de tes tables ou de tes requêtes.
je n'ai compris aucune des phrases de ta demande initiale.
j'ai l'impression que tu as quelque chose qui fonctionne bien, qui calcule "la note moyenne", et que tu veux ajouter le concept de bonus/malus annuel. si c'est cela, alors il serait utile que tu nous donnes la requête qui calcule la note moyenne, et que tu expliques comment le bonus/malus devrait influencer cette note.
ce serait utile aussi d'expliquer à quoi servent les colonnes de la table bonus/malus, surtout la colonne BM2016 et la colonne Points (Q5).
Répondre
Donnez votre avis
Utile
+0
plus moins
Désolée de ne pas avoir été claire, alors je vais essayer de l'être ;-))

Je rentre les données selon le formulaire ci-dessous :
http://img-19.ccm2.net/aGW4lfe5ngjI6AdaF2Yz-rRqjDc=/6cfa8556c77348309c2da7019d2a3e77/tmp/__Base_de_donnees-_C__Users_verop_Do.png

Chaques réponses entrées me génèrent automatiquement une note en fonction de différentes tables, ces notes sont appelées dans ce tableau Points (Q1) ou (Q2) etc...
http://img-19.ccm2.net/4-AvQ9bXOD5O5ah59B02L7OOTzk=/f9f32a16d07c4d0fa73ca0c51d33baa1/tmp/__Base_de_donnees-_C__Users_verop_Do.png

Et les points de la question 5, qui est le bonus/malus proviennent de la table :
http://img-19.ccm2.net/Zd_D4Ilb6953w8vYq4MRknS4ukY=/e896aafcafd8481d9d63172c9b21a083/tmp/__Base_de_donnees-_C__Users_verop_Do.png

Ce que j'aimerai pouvoir faire... c'est que pour un stand donné, la valeur retournée pour le bonus/malus soit liée à l'année des données, soit dans mon exemple pour 2016 ou 2017 ...

Pour le stand 16001, si les données concernent 2016, la valeur retournée devrait être "BM 2016" et si c'est 2017 "Points (Q5)".

J'admets que les intitulés des colonnes ne sont pas très explicites, car j'ai dû inclure la colonne pour 2016 en dernière minute, pour avoir l'historique. Mais actuellement dans ma requête, je n'ai que la valeur de la colonne "Points (Q5) qui m'est retournée pour les données relatives à 2016 et à 2017.

Voilà j'espère que c'est plus clair. Dis-moi si non.
yg_be 3794Messages postés lundi 9 juin 2008Date d'inscription ContributeurStatut 17 novembre 2017 Dernière intervention - 10 oct. 2017 à 08:56
suggestion: cette requête devrait te donner le bonus malus par année et par stand. tu peux ensuite, dans d'autres requêtes, utiliser cette requête au lieu d'utiliser la table bonus/malus.
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, [Points (Q5)] as bonusmalus 
FROM [Q5 - Bonus/Malus]; 
Répondre
Donnez votre avis
Utile
+0
plus moins
Merci beaucoup, c'est exactement ce que je souhaitais !

Par contre comment est-ce qu'il faut que je l'intègre dans la requête suivante pour que la colonne Points (Q5) utilise le résultat de la requête que tu m'as donnée :



Le SQL est :

SELECT [Données stands].[No du Stand (COE)], [Données stands].[Nom du Stand], [Produits vendus].Année, [Produits vendus].[Nom du produit], [Q1 - Saison].[Points (Q1)], [Q2 - Origine].[Points (Q2)], [Q3 - Label].[Points (Q3)], [Q4 - Frais].[Points (Q4)], [Q5 - Bonus/Malus].[Points (Q5)]
FROM [Q5 - Bonus/Malus] INNER JOIN ([Q4 - Frais] INNER JOIN ([Q3 - Label] INNER JOIN ([Q2 - Origine] INNER JOIN ([Q1 - Saison] INNER JOIN (Produits INNER JOIN ([Données stands] INNER JOIN [Produits vendus] ON [Données stands].[No du Stand (COE)] = [Produits vendus].[No du Stand (COE)]) ON Produits.[Nom du produit] = [Produits vendus].[Nom du produit]) ON [Q1 - Saison].[Réponse (Q1)] = Produits.Saison) 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)];

Un tout grand merci pour ton aide.
yg_be 3794Messages postés lundi 9 juin 2008Date d'inscription ContributeurStatut 17 novembre 2017 Dernière intervention - 14 oct. 2017 à 10:56
appelons A la requête que tu montres et B la requête union.
il faut modifier A pour utiliser B à la place de [Q5 - Bonus/Malus].
il faut aussi lier le champ annee de B avec le champ Année de [Produits vendus].
si tu partages le code SQL de la requête modifiée, je pourrai t'indiquer comment faire cette liaison.
ou bien utilise ceci:
SELECT [Données stands].[No du Stand (COE)], [Données stands].[Nom du Stand], [Produits vendus].Année, [Produits vendus].[Nom du produit], [Q1 - Saison].[Points (Q1)], [Q2 - Origine].[Points (Q2)], [Q3 - Label].[Points (Q3)], [Q4 - Frais].[Points (Q4)], [Bonus Malus].bonusmalus 
FROM [Bonus Malus] INNER JOIN ([Q4 - Frais] INNER JOIN ([Q3 - Label] INNER JOIN ([Q2 - Origine] INNER JOIN ([Q1 - Saison] INNER JOIN (Produits INNER JOIN ([Données stands] INNER JOIN [Produits vendus] ON [Données stands].[No du Stand (COE)] = [Produits vendus].[No du Stand (COE)]) ON Produits.[Nom du produit] = [Produits vendus].[Nom du produit]) ON [Q1 - Saison].[Réponse (Q1)] = Produits.Saison) 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 [Bonus Malus].stand = [Produits vendus].[No du Stand (COE)] and [Bonus Malus].annee = [Produits vendus].Année;
Répondre
Donnez votre avis
Utile
+0
plus moins
Je viens de voir que l'icone de ma requête à changer comme une union, est-ce normal et comment fait-on pour ravoir le mode "Création" :



Désolée, mais je suis un petit peu novice ;-))
yg_be 3794Messages postés lundi 9 juin 2008Date d'inscription ContributeurStatut 17 novembre 2017 Dernière intervention - 14 oct. 2017 à 10:48
c'est en effet une requête union, je pense qu'il n'y a rien à changer.
le mode SQL te permet de modifier la définition de la requête si nécessaire.
Répondre
Donnez votre avis
Utile
+0
plus moins
Merci beaucoup, j'ai ajusté le nom, car dans mon fichier je l'ai appelée Requête - Bonus Malus, ce qui donne comme SQL :

SELECT [Données stands].[No du Stand (COE)], [Données stands].[Nom du Stand], [Produits vendus].Année, [Produits vendus].[Nom du produit], [Q1 - Saison].[Points (Q1)], [Q2 - Origine].[Points (Q2)], [Q3 - Label].[Points (Q3)], [Q4 - Frais].[Points (Q4)], [Requête - Bonus Malus].bonusmalus
FROM [Requête - Bonus Malus] INNER JOIN ([Q4 - Frais] INNER JOIN ([Q3 - Label] INNER JOIN ([Q2 - Origine] INNER JOIN ([Q1 - Saison] INNER JOIN (Produits INNER JOIN ([Données stands] INNER JOIN [Produits vendus] ON [Données stands].[No du Stand (COE)] = [Produits vendus].[No du Stand (COE)]) ON Produits.[Nom du produit] = [Produits vendus].[Nom du produit]) ON [Q1 - Saison].[Réponse (Q1)] = Produits.Saison) 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 [Requête - Bonus Malus].stand = [Produits vendus].[No du Stand (COE)] and [Requête - Bonus Malus].annee = [Produits vendus].Année;


Je vais essayer de m'atteler à celle-ci, car j'ai une moyenne calculée, une moyenne du nombre de produits testés et le classement. Est-ce que tu peux m'aider ?

SELECT [Produits vendus].Année, [Produits vendus].[No du Stand (COE)], [Données stands].[No en 2017], [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([Q5 - Bonus/Malus].[Points (Q5)]) AS [MoyenneDePoints (Q5)], Avg([Points (Q1)]+[Points (Q2)]+[Points (Q3)]+[Points (Q4)]+[Points (Q5)]) 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)]
GROUP BY [Produits vendus].Année, [Produits vendus].[No du Stand (COE)], [Données stands].[No en 2017], [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)]+[Points (Q5)]) DESC;

D'avance merci
yg_be 3794Messages postés lundi 9 juin 2008Date d'inscription ContributeurStatut 17 novembre 2017 Dernière intervention - 15 oct. 2017 à 19:19
tu montres deux requêtes en #10. la première donne-t-elle un résultat correct et complet?
si oui, je propose de simplifier la deuxième ainsi, en supposant que la première s'appelle details:
SELECT Année, [No du Stand (COE)], [No en 2017], [Nom du Stand],Label, Avg[Points (Q1)]) AS [MoyenneDePoints (Q1)], Avg([Points (Q2)]) AS [MoyenneDePoints (Q2)], Avg([Points (Q3)]) AS [MoyenneDePoints (Q3)], Avg([Points (Q4)]) AS [MoyenneDePoints (Q4)], Avg[Points (Q5)]) AS [MoyenneDePoints (Q5)], Avg([Points (Q1)]+[Points (Q2)]+[Points (Q3)]+[Points (Q4)]+[Points (Q5)]) AS TOTAL, Count([Nom du produit]) AS [CompteDeNom du produit], DCount("*","[Requête - Produits vendus]","[TOTAL] > " & [TOTAL] & " AND [Année] = " & [Année])+1 AS Rang 
FROM details
GROUP BY Année, [No du Stand (COE)], [No en 2017], [Nom du Stand], Label 
ORDER BY Année, Avg([Points (Q1)]+[Points (Q2)]+[Points (Q3)]+[Points (Q4)]+[Points (Q5)]) DESC

Comment puis-je t'aider?
Répondre
Donnez votre avis
Utile
+0
plus moins
oui tu as bien compris, la première (celle-ci) me donne un résultat correct, avec le détail des produits/année/stand :



le SQL est :
SELECT [Données stands].[No du Stand (COE)], [Données stands].[Nom du Stand], [Produits vendus].Année, [Produits vendus].[Nom du produit], [Q1 - Saison].[Points (Q1)], [Q2 - Origine].[Points (Q2)], [Q3 - Label].[Points (Q3)], [Q4 - Frais].[Points (Q4)], [Requête - Bonus Malus].bonusmalus
FROM [Requête - Bonus Malus] INNER JOIN ([Q4 - Frais] INNER JOIN ([Q3 - Label] INNER JOIN ([Q2 - Origine] INNER JOIN ([Q1 - Saison] INNER JOIN (Produits INNER JOIN ([Données stands] INNER JOIN [Produits vendus] ON [Données stands].[No du Stand (COE)] = [Produits vendus].[No du Stand (COE)]) ON Produits.[Nom du produit] = [Produits vendus].[Nom du produit]) ON [Q1 - Saison].[Réponse (Q1)] = Produits.Saison) 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 ([Requête - Bonus Malus].annee = [Produits vendus].Année) AND ([Requête - Bonus Malus].stand = [Produits vendus].[No du Stand (COE)]);


et maintenant je désire ajouter les moyennes des notes par année, une moyenne pour le stand, de compter le nombre moyen de produits testés et à la fin du tableau d'avoir le rang (comme celle-ci qui ne reprends pas le bonusmalus selon la nouvelle méthode de requête) :



et le SQL est :
SELECT [Produits vendus].Année, [Produits vendus].[No du Stand (COE)], [Données stands].[No en 2017], [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([Q5 - Bonus/Malus].[Points (Q5)]) AS [MoyenneDePoints (Q5)], Avg([Points (Q1)]+[Points (Q2)]+[Points (Q3)]+[Points (Q4)]+[Points (Q5)]) 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)]
GROUP BY [Produits vendus].Année, [Produits vendus].[No du Stand (COE)], [Données stands].[No en 2017], [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)]+[Points (Q5)]) DESC;


D'avance merci pour ton aide
yg_be 3794Messages postés lundi 9 juin 2008Date d'inscription ContributeurStatut 17 novembre 2017 Dernière intervention - 18 oct. 2017 à 20:28
que penses-tu de ceci:
SELECT Année, [No du Stand (COE)], [No en 2017], [Nom du Stand],Label, Avg[Points (Q1)]) AS [MoyenneDePoints (Q1)], Avg([Points (Q2)]) AS [MoyenneDePoints (Q2)], Avg([Points (Q3)]) AS [MoyenneDePoints (Q3)], Avg([Points (Q4)]) AS [MoyenneDePoints (Q4)], Avg(bonusmalus) AS [MoyenneDePoints (Q5)], Avg([Points (Q1)]+[Points (Q2)]+[Points (Q3)]+[Points (Q4)]+bonusmalus) AS TOTAL, Count([Nom du produit]) AS [CompteDeNom du produit], DCount("*","[Requête - Produits vendus]","[TOTAL] > " & [TOTAL] & " AND [Année] = " & [Année])+1 AS Rang 
FROM Détails
GROUP BY Année, [No du Stand (COE)], [No en 2017], [Nom du Stand], Label 
ORDER BY Année, Avg([Points (Q1)]+[Points (Q2)]+[Points (Q3)]+[Points (Q4)]+[Points (Q5)]) DESC
Répondre
Donnez votre avis
Utile
+0
plus moins
J'ai copié ton SQL et j'obtiens le message suivant lorsque je veux passer en "mode feuille de données" :



Et ça me passe en surbrillance noire, le 1er Points (Q1) du code.

Est-ce que tu sais pourquoi ?
yg_be 3794Messages postés lundi 9 juin 2008Date d'inscription ContributeurStatut 17 novembre 2017 Dernière intervention - 20 oct. 2017 à 23:52
oui, j'ai fait (au moins) une erreur:
SELECT Année, [No du Stand (COE)], [No en 2017], [Nom du Stand],Label, Avg([Points (Q1)]) AS [MoyenneDePoints (Q1)], Avg([Points (Q2)]) AS [MoyenneDePoints (Q2)], Avg([Points (Q3)]) AS [MoyenneDePoints (Q3)], Avg([Points (Q4)]) AS [MoyenneDePoints (Q4)], Avg(bonusmalus) AS [MoyenneDePoints (Q5)], Avg([Points (Q1)]+[Points (Q2)]+[Points (Q3)]+[Points (Q4)]+bonusmalus) AS TOTAL, Count([Nom du produit]) AS [CompteDeNom du produit], DCount("*","[Requête - Produits vendus]","[TOTAL] > " & [TOTAL] & " AND [Année] = " & [Année])+1 AS Rang 
FROM Détails
GROUP BY Année, [No du Stand (COE)], [No en 2017], [Nom du Stand], Label 
ORDER BY Année, Avg([Points (Q1)]+[Points (Q2)]+[Points (Q3)]+[Points (Q4)]+[Points (Q5)]) DESC
Répondre
Donnez votre avis
Utile
+0
plus moins
Merci c'est top, j'ai tout ce qu'il me faut.

MERCI !!!!

Dernière question sur ce sujet : en perspective de 2018, je vais devoir aussi avoir une nouvelle colonne avec les valeurs pour 2018 pour les Bonus / Malus que je vais aussi appeler BM2018, donc si j'ai bien compris dans la requête qui reprend les valeurs "Requête - Bonus Malus" (que tu m'as fait créé), je vais devoir ajouter à la fin du SQL : UNION SELECT 2018 as Annee, [No du Stand (COE)] as Stand, BM2018 as BonusMalus FROM [Q5 - Bonus/Malus]


c'est bien correct ?
yg_be 3794Messages postés lundi 9 juin 2008Date d'inscription ContributeurStatut 17 novembre 2017 Dernière intervention - 21 oct. 2017 à 11:46
pour BM2018, tout-à-fait correct!
content d'avoir pu te dépanner, :-)
peux-tu marquer comme résolu?
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !