GNT sans publicité, site mobile, fonctionnalitées exclusives...

Rapport des ventes comparatif

Le
FidoDido
Bonjour je suis nouveau ici, et j'ai un problème voici mon problème
j,ai une table qui s'appele "Remise" qui comporte les champs suivant
1- Remise ID
2- Date
3- Clients
4- Catégorie
5- Produits
6- Montant

j'ai créer deux requete qui me sort les ventes pour les années 2008 et 2009,
la je voudrais faire une requête, qui me sortirais un rapport mes champs de 1
a 5 plus le champ 6 je voudrais que l'on vois un champ 2008 et 2009 d'ou je
pourrais faire la différence des ventes entre 2009 et 2008, j'ai essayer de
faire une requete UNION, mais j'ai toujours le même problème, a montant (6)
il me sort juste une clonne alors que je voudrais avoir une colonne 2008 et
ne 2009, comment dois-je faire ? merci de votre aide
Lire les 11 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Michel__D
Le #19145091
Bonjour,

FidoDido a écrit :
Bonjour je suis nouveau ici, et j'ai un problème voici mon problème
j,ai une table qui s'appele "Remise" qui comporte les champs suivant
1- Remise ID
2- Date
3- Clients
4- Catégorie
5- Produits
6- Montant

j'ai créer deux requete qui me sort les ventes pour les années 2008 et 2009,
la je voudrais faire une requête, qui me sortirais un rapport mes champs de 1
a 5 plus le champ 6 je voudrais que l'on vois un champ 2008 et 2009 d'ou je
pourrais faire la différence des ventes entre 2009 et 2008, j'ai essayer de
faire une requete UNION, mais j'ai toujours le même problème, a montant (6)
il me sort juste une clonne alors que je voudrais avoir une colonne 2008 et
ne 2009, comment dois-je faire ? merci de votre aide



Donne le contenu SQL de tes requêtes (SELECT ...)

PS:Une requête union ne semble pas être la solution.
FidoDido
Le #19145271
Bonjour Michel_D, voici le code que j'ai dans ma requete Union
SELECT Clients.Société, Clients.[Region ID], Produits.[Catégorie Produits],
Produits.Produits, Remise.Daté, Remise.Montant AS 2008
FROM Produits INNER JOIN (Clients INNER JOIN Remise ON Clients.[Clients ID]
= Remise.Client) ON Produits.[Produits ID] = Remise.Produits
GROUP BY Clients.Société, Clients.[Region ID], Produits.[Catégorie
Produits], Produits.Produits, Remise.Daté, Remise.Montant
HAVING (((Year([Daté])) 08))
UNION ALL SELECT Clients.Société, Clients.[Region ID], Produits.[Catégorie
Produits], Produits.Produits, Remise.Daté, Remise.Montant AS 2009
FROM Produits INNER JOIN (Clients INNER JOIN Remise ON Clients.[Clients ID]
= Remise.Client) ON Produits.[Produits ID] = Remise.Produits
GROUP BY Clients.Société, Clients.[Region ID], Produits.[Catégorie
Produits], Produits.Produits, Remise.Daté, Remise.Montant
HAVING (((Year([Daté])) 09));


"Michel__D" a écrit :

Bonjour,

FidoDido a écrit :
> Bonjour je suis nouveau ici, et j'ai un problème voici mon problème
> j,ai une table qui s'appele "Remise" qui comporte les champs suivant
> 1- Remise ID
> 2- Date
> 3- Clients
> 4- Catégorie
> 5- Produits
> 6- Montant
>
> j'ai créer deux requete qui me sort les ventes pour les années 2008 et 2009,
> la je voudrais faire une requête, qui me sortirais un rapport mes champs de 1
> a 5 plus le champ 6 je voudrais que l'on vois un champ 2008 et 2009 d'ou je
> pourrais faire la différence des ventes entre 2009 et 2008, j'ai essayer de
> faire une requete UNION, mais j'ai toujours le même problème, a montant (6)
> il me sort juste une clonne alors que je voudrais avoir une colonne 2008 et
> ne 2009, comment dois-je faire ? merci de votre aide

Donne le contenu SQL de tes requêtes (SELECT ...)

PS:Une requête union ne semble pas être la solution.



Michel__D
Le #19145261
Re,

Vu que tu laisse le champ date cela sous-entend que tu n'auras pas le
montant de l'année 2008 sur la même ligne que l'année 2009 et dans ce cas
la requête union est une solution tu rajoute un champ fictif correspondant
au champ manquant par exemple pour la portion spécifique à 2008 tu rajoute
le champ 0 AS 2009

SELECT Clients.Société, ... , Remise.Montant AS 2008, 0 AS 2009

et pour la portion dédié à 2009

SELECT Clients.Société, ... , 0 AS 2008, Remise.Montant AS 2009

PS:Comme tu ne réalise pas d'opération sur les enregistrements tu pourrais
modifier les requêtes en supprimant la clause GROUP BY ainsi que la clause
HAVING et mettre une clause WHERE qui renverrait les enregistrements de
l'année concernée.

WHERE Year(Remise.Date) 08

FidoDido a écrit :
Bonjour Michel_D, voici le code que j'ai dans ma requete Union
SELECT Clients.Société, Clients.[Region ID], Produits.[Catégorie Produits],
Produits.Produits, Remise.Daté, Remise.Montant AS 2008
FROM Produits INNER JOIN (Clients INNER JOIN Remise ON Clients.[Clients ID]
= Remise.Client) ON Produits.[Produits ID] = Remise.Produits
GROUP BY Clients.Société, Clients.[Region ID], Produits.[Catégorie
Produits], Produits.Produits, Remise.Daté, Remise.Montant
HAVING (((Year([Daté])) 08))
UNION ALL SELECT Clients.Société, Clients.[Region ID], Produits.[Catégorie
Produits], Produits.Produits, Remise.Daté, Remise.Montant AS 2009
FROM Produits INNER JOIN (Clients INNER JOIN Remise ON Clients.[Clients ID]
= Remise.Client) ON Produits.[Produits ID] = Remise.Produits
GROUP BY Clients.Société, Clients.[Region ID], Produits.[Catégorie
Produits], Produits.Produits, Remise.Daté, Remise.Montant
HAVING (((Year([Daté])) 09));


"Michel__D" a écrit :

Bonjour,

FidoDido a écrit :
Bonjour je suis nouveau ici, et j'ai un problème voici mon problème
j,ai une table qui s'appele "Remise" qui comporte les champs suivant
1- Remise ID
2- Date
3- Clients
4- Catégorie
5- Produits
6- Montant

j'ai créer deux requete qui me sort les ventes pour les années 2008 et 2009,
la je voudrais faire une requête, qui me sortirais un rapport mes champs de 1
a 5 plus le champ 6 je voudrais que l'on vois un champ 2008 et 2009 d'ou je
pourrais faire la différence des ventes entre 2009 et 2008, j'ai essayer de
faire une requete UNION, mais j'ai toujours le même problème, a montant (6)
il me sort juste une clonne alors que je voudrais avoir une colonne 2008 et
ne 2009, comment dois-je faire ? merci de votre aide


Donne le contenu SQL de tes requêtes (SELECT ...)

PS:Une requête union ne semble pas être la solution.





FidoDido
Le #19145561
Merci Michel_D, comment je fait pour ajouter un champ fictif, et es-ce que je
dois ajouter 2 champ fictif sois pour l'année 2008 et un pour 2009 ? et es-ce
que je dois modifier ma requete Union ?

merci

"Michel__D" a écrit :

Re,

Vu que tu laisse le champ date cela sous-entend que tu n'auras pas le
montant de l'année 2008 sur la même ligne que l'année 2009 et dans ce cas
la requête union est une solution tu rajoute un champ fictif correspondant
au champ manquant par exemple pour la portion spécifique à 2008 tu rajoute
le champ 0 AS 2009

SELECT Clients.Société, ... , Remise.Montant AS 2008, 0 AS 2009

et pour la portion dédié à 2009

SELECT Clients.Société, ... , 0 AS 2008, Remise.Montant AS 2009

PS:Comme tu ne réalise pas d'opération sur les enregistrements tu pourrais
modifier les requêtes en supprimant la clause GROUP BY ainsi que la clause
HAVING et mettre une clause WHERE qui renverrait les enregistrements de
l'année concernée.

WHERE Year(Remise.Date) 08

FidoDido a écrit :
> Bonjour Michel_D, voici le code que j'ai dans ma requete Union
> SELECT Clients.Société, Clients.[Region ID], Produits.[Catégorie Produits],
> Produits.Produits, Remise.Daté, Remise.Montant AS 2008
> FROM Produits INNER JOIN (Clients INNER JOIN Remise ON Clients.[Clients ID]
> = Remise.Client) ON Produits.[Produits ID] = Remise.Produits
> GROUP BY Clients.Société, Clients.[Region ID], Produits.[Catégorie
> Produits], Produits.Produits, Remise.Daté, Remise.Montant
> HAVING (((Year([Daté])) 08))
> UNION ALL SELECT Clients.Société, Clients.[Region ID], Produits.[Catégorie
> Produits], Produits.Produits, Remise.Daté, Remise.Montant AS 2009
> FROM Produits INNER JOIN (Clients INNER JOIN Remise ON Clients.[Clients ID]
> = Remise.Client) ON Produits.[Produits ID] = Remise.Produits
> GROUP BY Clients.Société, Clients.[Region ID], Produits.[Catégorie
> Produits], Produits.Produits, Remise.Daté, Remise.Montant
> HAVING (((Year([Daté])) 09));
>
>
> "Michel__D" a écrit :
>
>> Bonjour,
>>
>> FidoDido a écrit :
>>> Bonjour je suis nouveau ici, et j'ai un problème voici mon problème
>>> j,ai une table qui s'appele "Remise" qui comporte les champs suivant
>>> 1- Remise ID
>>> 2- Date
>>> 3- Clients
>>> 4- Catégorie
>>> 5- Produits
>>> 6- Montant
>>>
>>> j'ai créer deux requete qui me sort les ventes pour les années 2008 et 2009,
>>> la je voudrais faire une requête, qui me sortirais un rapport mes champs de 1
>>> a 5 plus le champ 6 je voudrais que l'on vois un champ 2008 et 2009 d'ou je
>>> pourrais faire la différence des ventes entre 2009 et 2008, j'ai essayer de
>>> faire une requete UNION, mais j'ai toujours le même problème, a montant (6)
>>> il me sort juste une clonne alors que je voudrais avoir une colonne 2008 et
>>> ne 2009, comment dois-je faire ? merci de votre aide
>> Donne le contenu SQL de tes requêtes (SELECT ...)
>>
>> PS:Une requête union ne semble pas être la solution.
>>



Michel__D
Le #19146991
Oui, comme ceci :

SELECT Clients.Société, Clients.[Region ID], Produits.[Catégorie Produits],
Produits.Produits, Remise.Daté, Remise.Montant AS 2008, 0 AS 2009
FROM Produits INNER JOIN (Clients INNER JOIN Remise
ON Clients.[Clients ID] = Remise.Client)
ON Produits.[Produits ID] = Remise.Produits
GROUP BY Clients.Société, Clients.[Region ID], Produits.[Catégorie Produits],
Produits.Produits, Remise.Daté, Remise.Montant
HAVING (((Year([Daté])) 08))
UNION ALL
SELECT Clients.Société, Clients.[Region ID], Produits.[Catégorie Produits],
Produits.Produits, Remise.Daté, 0, Remise.Montant
FROM Produits INNER JOIN (Clients INNER JOIN Remise
ON Clients.[Clients ID] = Remise.Client)
ON Produits.[Produits ID] = Remise.Produits
GROUP BY Clients.Société, Clients.[Region ID], Produits.[Catégorie Produits],
Produits.Produits, Remise.Daté, Remise.Montant
HAVING (((Year([Daté])) 09));

Ou théoriquement ce qui suit est équivalent (à vérifier) :

SELECT T2.Société, T2.[Region ID], T1.[Catégorie Produits], T1.Produits,
T3.Daté, T3.Montant AS 2008, 0 AS 2009
FROM Produits AS T1 INNER JOIN (Clients AS T2 INNER JOIN Remise AS T3
ON T2.[Clients ID] = T3.Client) ON T1.[Produits ID] = T3.Produits
WHERE Year(T3.[Daté]) 08
UNION
SELECT T2.Société, T2.[Region ID], T1.[Catégorie Produits], T1.Produits,
T3.Daté, 0, T3.Montant
FROM Produits AS T1 INNER JOIN (Clients AS T2 INNER JOIN Remise AS T3
ON T2.[Clients ID] = T3.Client) ON T1.[Produits ID] = T3.Produits
WHERE Year(T3.[Daté]) 09;


FidoDido a écrit :
Merci Michel_D, comment je fait pour ajouter un champ fictif, et es-ce que je
dois ajouter 2 champ fictif sois pour l'année 2008 et un pour 2009 ? et es-ce
que je dois modifier ma requete Union ?

merci

"Michel__D" a écrit :

Re,

Vu que tu laisse le champ date cela sous-entend que tu n'auras pas le
montant de l'année 2008 sur la même ligne que l'année 2009 et dans ce cas
la requête union est une solution tu rajoute un champ fictif correspondant
au champ manquant par exemple pour la portion spécifique à 2008 tu rajoute
le champ 0 AS 2009

SELECT Clients.Société, ... , Remise.Montant AS 2008, 0 AS 2009

et pour la portion dédié à 2009

SELECT Clients.Société, ... , 0 AS 2008, Remise.Montant AS 2009

PS:Comme tu ne réalise pas d'opération sur les enregistrements tu pourrais
modifier les requêtes en supprimant la clause GROUP BY ainsi que la clause
HAVING et mettre une clause WHERE qui renverrait les enregistrements de
l'année concernée.

WHERE Year(Remise.Date) 08

FidoDido a écrit :
Bonjour Michel_D, voici le code que j'ai dans ma requete Union
SELECT Clients.Société, Clients.[Region ID], Produits.[Catégorie Produits],
Produits.Produits, Remise.Daté, Remise.Montant AS 2008
FROM Produits INNER JOIN (Clients INNER JOIN Remise ON Clients.[Clients ID]
= Remise.Client) ON Produits.[Produits ID] = Remise.Produits
GROUP BY Clients.Société, Clients.[Region ID], Produits.[Catégorie
Produits], Produits.Produits, Remise.Daté, Remise.Montant
HAVING (((Year([Daté])) 08))
UNION ALL SELECT Clients.Société, Clients.[Region ID], Produits.[Catégorie
Produits], Produits.Produits, Remise.Daté, Remise.Montant AS 2009
FROM Produits INNER JOIN (Clients INNER JOIN Remise ON Clients.[Clients ID]
= Remise.Client) ON Produits.[Produits ID] = Remise.Produits
GROUP BY Clients.Société, Clients.[Region ID], Produits.[Catégorie
Produits], Produits.Produits, Remise.Daté, Remise.Montant
HAVING (((Year([Daté])) 09));


"Michel__D" a écrit :

Bonjour,

FidoDido a écrit :
Bonjour je suis nouveau ici, et j'ai un problème voici mon problème
j,ai une table qui s'appele "Remise" qui comporte les champs suivant
1- Remise ID
2- Date
3- Clients
4- Catégorie
5- Produits
6- Montant

j'ai créer deux requete qui me sort les ventes pour les années 2008 et 2009,
la je voudrais faire une requête, qui me sortirais un rapport mes champs de 1
a 5 plus le champ 6 je voudrais que l'on vois un champ 2008 et 2009 d'ou je
pourrais faire la différence des ventes entre 2009 et 2008, j'ai essayer de
faire une requete UNION, mais j'ai toujours le même problème, a montant (6)
il me sort juste une clonne alors que je voudrais avoir une colonne 2008 et
ne 2009, comment dois-je faire ? merci de votre aide


Donne le contenu SQL de tes requêtes (SELECT ...)

PS:Une requête union ne semble pas être la solution.









Publicité
Suivre les réponses
Poster une réponse
Anonyme