Pb requete avec group by

teuteu_ Messages postés 16 Date d'inscription lundi 6 décembre 2004 Statut Membre Dernière intervention 20 mai 2005 - 9 mai 2005 à 11:47
teuteu_ Messages postés 16 Date d'inscription lundi 6 décembre 2004 Statut Membre Dernière intervention 20 mai 2005 - 10 mai 2005 à 15:59
bonjour,



j'ai un probleme avec une requete:

j'ai deux tables T_commande et T_ligne_commande:



T_commande(num_cde,date_cde,frais_port)

T_ligne_commande(num_lig_cde,prix_lig_cde,qte_lig_cde,date_livraison,#num_cde)



je souhaiterai faire une requete qui calcule le total par mois, avec
les frais de port) des commandes livrées (date_livraison renseignée).
j'ai fait une requete de ce type:



SELECT
(Sum(T_ligne_commande.prix_lig_cde*T_ligne_commande.qte_lig_cde)+Sum(T_commande.frais_port))
AS Expr1, Month(T_ligne_commande.date_livraison) AS Expr2

FROM T_ligne_commande, T_commande

WHERE (((Year([T_ligne_commande].[date_livraison]))=2005) AND ((T_ligne_commande.num_cde)=[T_commande].[num_cde]))

GROUP BY Month(T_ligne_commande.date_livraison);



le souci, c'est que de cette manière, les frais de port sont comptés
plusieurs fois, pour chaque ligne de commande, c'est un peu emmerdant!

je souhaiterai faire le total des lignes de commande, et y ajouter les
frais de port pour chaque commande, mais je ne sais pas comment faire.



quelqu'un aurait il une idée?

12 réponses

Starec Messages postés 152 Date d'inscription mercredi 30 mars 2005 Statut Membre Dernière intervention 5 mars 2007
9 mai 2005 à 11:54
Salut,

Fais-tu ta ligne SLQ directement ou passes-tu par l'interface graphique d'Access

Starec
0
teuteu_ Messages postés 16 Date d'inscription lundi 6 décembre 2004 Statut Membre Dernière intervention 20 mai 2005
9 mai 2005 à 12:14
je fais ma requete direct en sql, mais access rajoute des parenthèses un peu partout....
0
Starec Messages postés 152 Date d'inscription mercredi 30 mars 2005 Statut Membre Dernière intervention 5 mars 2007
9 mai 2005 à 12:28
Je sais, mais le fait de faire la requête en mode graphique, me permet de contrôler rapidement mes données, surtout quand tu as des sommes et des regroupements à faire, ensuite je fais un copier coller, et je contrôle mes parenthèses, et mes variables, essaye et je suis sûr que tu résoudra ton problème, car à permière vu je ne vois pas.

Starec
0
dam84 Messages postés 40 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 17 mai 2005
9 mai 2005 à 13:07
Hello

La solution est de ne pas faire le lien entre tes 2 tables

select sum (frais_port) from T_commande where machin bidule
0

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

Posez votre question
teuteu_ Messages postés 16 Date d'inscription lundi 6 décembre 2004 Statut Membre Dernière intervention 20 mai 2005
9 mai 2005 à 14:11
ta requete sur les frais de port passe, mais moi , je souhaiterai
additionner les frais de ports et le total par ligne de commande.

lorsque je vire le jointure dans ma requete initiale, j'obtiens un
résultat faux, les différentes valeurs ont été additionnées plusieurs
fois par access:

SELECT
(Sum(T_ligne_commande.prix_lig_cde*T_ligne_commande.qte_lig_cde)+Sum(T_commande.frais_port))
AS Expr1, Month(T_ligne_commande.date_livraison) AS Expr2

FROM T_ligne_commande, T_commande

WHERE Year(T_ligne_commande.date_livraison)=2005

GROUP BY Month(T_ligne_commande.date_livraison);







comment faire?
0
dam84 Messages postés 40 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 17 mai 2005
9 mai 2005 à 15:04
Eh...
Tu es obligé de faire 2 requettes
Tu ne peux pas avoir la sum des frais de ports et le total par ligne dans une seul requette
Il te faut donc 2 requettes

fais ta premiere requette

select sum (frais_port),null as <sum>, null as date_liv from T_commande where machin bidule union

select null, (T_ligne_commande.prix_lig_cde*T_ligne_commande.qte_lig_cde), Month(T_ligne_commande.date_livraison) AS date_liv from T_ligne_commande
0
teuteu_ Messages postés 16 Date d'inscription lundi 6 décembre 2004 Statut Membre Dernière intervention 20 mai 2005
9 mai 2005 à 15:57
je ne comprend pas trop la requete en fait lol



a quoi servent les "null" dans le selct des deux requetes?
0
dam84 Messages postés 40 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 17 mai 2005
9 mai 2005 à 16:05
les null te servent juste a definir le nombre de colonnes que les 2 select vont te retourner
Le 1er select retourne 3 colonnes
Dans la 1er il met la sum et dans les 2 autres il ne met rien
Le 2eme select ne met rien dans la 1er colonne et rempli ensuite les 2 autres colonnes
0
antoineraymond Messages postés 99 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 4 décembre 2008
9 mai 2005 à 17:33
Si tous les les frais de port sont les même tu peux faire ça:

SELECT (Sum(T_ligne_commande.prix_lig_cde*T_ligne_commande.qte_lig_cde)+MAX(T_commande.frais_port)) AS Expr1, Month(T_ligne_commande.date_livraison) AS Expr2
FROM T_ligne_commande, T_commande
WHERE (((Year([T_ligne_commande].[date_livraison]))=2005) AND ((T_ligne_commande.num_cde)=[T_commande].[num_cde]))
GROUP BY Month(T_ligne_commande.date_livraison);

Antoine
0
teuteu_ Messages postés 16 Date d'inscription lundi 6 décembre 2004 Statut Membre Dernière intervention 20 mai 2005
10 mai 2005 à 08:36
merci,c cool mais les frais de ports ne sont pas les mêmes, ce serait trop simple!





sinon Dam, pour les "null", c ok j'ai compris, mais les deux requetes
avec UNION ne passent pas, les frais de port sont bons, mais pour les
deux autres champs, j'obtiens des hiéroglyphes!


voici ma requete:





select sum (frais_port),null,null


from T_commande


UNION select null,
Sum(T_ligne_commande.prix_lig_cde*T_ligne_commande.qte_lig_cde),
Month(T_ligne_commande.date_livraison) AS date_liv


from T_ligne_commande


where Year(date_livraison)=2005


group by Month(T_ligne_commande.date_livraison);





Quand j'essaye de mettre dans le premier Select: null as <sum>, null as date_liv, la requete ne passe pas
0
antoineraymond Messages postés 99 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 4 décembre 2008
10 mai 2005 à 14:40
Je veux dire tous les frais de ports de la même commande. Avec la condition le MAX retourne seulement un montand des frais de pourts de la commande.

Antoine
0
teuteu_ Messages postés 16 Date d'inscription lundi 6 décembre 2004 Statut Membre Dernière intervention 20 mai 2005
10 mai 2005 à 15:59
autant pour moi!!

c cool je vais tester ça

je te tiens au courant



merki
0
Rejoignez-nous