Bonjour! Le probl=E8me avec la requ=EAte suivante c'est=20
lorqu'il y a plusieur taux horaires dif=E9rent le=20
regroupement ne se fait plus sur le Numero. Pouvez-vous=20
m'aider. Merci d'avance!
SELECT Changements.Numero, Changements.NoProd1,=20
Changements.NoProd2, Changements.NoProd3,=20
Concepteur.Concepteur, Temps.NoPiece, Statut.Statut,=20
Changements.Titre, Last(Changements.DatVig) AS=20
DernierDeDatVig, Last(Changements.DatFin) AS=20
DernierDeDatFin, Last(DemChTech.TempsEst) AS=20
DernierDeTempsEst, [TauxHoraire]*[TempsEst] AS coutEsti,=20
Sum(Temps.Temps) AS SommeDeTemps, Temps.NoProjet, Last
(Temps.Desc) AS DernierDeDesc, Last(ListeTous.Desc) AS=20
DernierDeDesc1, Changements.NoProd1, Changements.NoProd2,=20
Changements.NoProd3, TauxHoraire.TauxHoraire, Sum
(Temps.Temps) AS SommeDeTemps1
FROM Statut INNER JOIN (LigneProd INNER JOIN=20
(((((Changements INNER JOIN Temps ON Changements.Numero =3D=20
Temps.NoProjet) INNER JOIN TauxHoraire ON=20
Temps.NoTauxHoraire =3D TauxHoraire.NoTauxHoraire) INNER=20
JOIN Concepteur ON Changements.NoConcep =3D=20
Concepteur.NoConcep) LEFT JOIN ListeTous ON Temps.NoPiece=20
=3D ListeTous.NumeroReg) INNER JOIN DemChTech ON=20
Changements.NoDct =3D DemChTech.NoDct) ON LigneProd.NoProd=20
=3D Changements.NoProd) ON Statut.NoStat =3D=20
Changements.NoStat
GROUP BY Changements.Numero, Changements.NoProd1,=20
Changements.NoProd2, Changements.NoProd3,=20
Concepteur.Concepteur, Temps.NoPiece, Statut.Statut,=20
Changements.Titre, [TauxHoraire]*[TempsEst],=20
Temps.NoProjet, Changements.NoProd1, Changements.NoProd2,=20
Changements.NoProd3, TauxHoraire.TauxHoraire
HAVING (((Changements.NoProd1)=3D[Formulaires]![Imprimer]!
[Produit]) AND ((Concepteur.Concepteur)=3D[Formulaires]!
[Imprimer]![Concep]) AND ((Temps.NoPiece)=3D[Formulaires]!
[Imprimer]![Piece]) AND ((Statut.Statut)=3D[Formulaires]!
[Imprimer]![Statut])) OR (((Changements.NoProd2)=3D
[Formulaires]![Imprimer]![Produit]) AND=20
((Concepteur.Concepteur)=3D[Formulaires]![Imprimer]!
[Concep]) AND ((Temps.NoPiece)=3D[Formulaires]![Imprimer]!
[Piece]) AND ((Statut.Statut)=3D[Formulaires]![Imprimer]!
[Statut])) OR (((Changements.NoProd3)=3D[Formulaires]!
[Imprimer]![Produit]) AND ((Concepteur.Concepteur)=3D
[Formulaires]![Imprimer]![Concep]) AND ((Temps.NoPiece)=3D
[Formulaires]![Imprimer]![Piece]) AND ((Statut.Statut)=3D
[Formulaires]![Imprimer]![Statut]));
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Michel Walsh
Salut,
Le regroupement produit un résult qui est en erreur? ou un résultat qui ne correspond pas à ce que tu attends? et, dans tous les cas, quelle est la différence entre le résultat et ce qui, selon toi, devrait être le résultat?
Change the HAVING pour un WHERE... il est probablement plus judicieux d'éliminer les enregistrements AVANT de faire les aggrégations et groupes. En effet, aucune condition dans le HAVING n'implique d'aggrégats, c'est, semble-t-il, donc un WHERE... ayant la condition dans le where simplifierait l'ouvrage devant être fait, par la suite, par le GROUP BY (moins de groupes, moins de comparaisons, moins de travail, plus rapide d'exécution).
Espérant être utile, Vanderghast, Access MVP
"Lolo" wrote in message news:1775701c418e4$3ba621d0$ Bonjour! Le problème avec la requête suivante c'est lorqu'il y a plusieur taux horaires diférent le regroupement ne se fait plus sur le Numero. Pouvez-vous m'aider. Merci d'avance!
SELECT Changements.Numero, Changements.NoProd1, Changements.NoProd2, Changements.NoProd3, Concepteur.Concepteur, Temps.NoPiece, Statut.Statut, Changements.Titre, Last(Changements.DatVig) AS DernierDeDatVig, Last(Changements.DatFin) AS DernierDeDatFin, Last(DemChTech.TempsEst) AS DernierDeTempsEst, [TauxHoraire]*[TempsEst] AS coutEsti, Sum(Temps.Temps) AS SommeDeTemps, Temps.NoProjet, Last (Temps.Desc) AS DernierDeDesc, Last(ListeTous.Desc) AS DernierDeDesc1, Changements.NoProd1, Changements.NoProd2, Changements.NoProd3, TauxHoraire.TauxHoraire, Sum (Temps.Temps) AS SommeDeTemps1 FROM Statut INNER JOIN (LigneProd INNER JOIN (((((Changements INNER JOIN Temps ON Changements.Numero Temps.NoProjet) INNER JOIN TauxHoraire ON Temps.NoTauxHoraire = TauxHoraire.NoTauxHoraire) INNER JOIN Concepteur ON Changements.NoConcep Concepteur.NoConcep) LEFT JOIN ListeTous ON Temps.NoPiece = ListeTous.NumeroReg) INNER JOIN DemChTech ON Changements.NoDct = DemChTech.NoDct) ON LigneProd.NoProd = Changements.NoProd) ON Statut.NoStat Changements.NoStat GROUP BY Changements.Numero, Changements.NoProd1, Changements.NoProd2, Changements.NoProd3, Concepteur.Concepteur, Temps.NoPiece, Statut.Statut, Changements.Titre, [TauxHoraire]*[TempsEst], Temps.NoProjet, Changements.NoProd1, Changements.NoProd2, Changements.NoProd3, TauxHoraire.TauxHoraire HAVING (((Changements.NoProd1)=[Formulaires]![Imprimer]! [Produit]) AND ((Concepteur.Concepteur)=[Formulaires]! [Imprimer]![Concep]) AND ((Temps.NoPiece)=[Formulaires]! [Imprimer]![Piece]) AND ((Statut.Statut)=[Formulaires]! [Imprimer]![Statut])) OR (((Changements.NoProd2) [Formulaires]![Imprimer]![Produit]) AND ((Concepteur.Concepteur)=[Formulaires]![Imprimer]! [Concep]) AND ((Temps.NoPiece)=[Formulaires]![Imprimer]! [Piece]) AND ((Statut.Statut)=[Formulaires]![Imprimer]! [Statut])) OR (((Changements.NoProd3)=[Formulaires]! [Imprimer]![Produit]) AND ((Concepteur.Concepteur) [Formulaires]![Imprimer]![Concep]) AND ((Temps.NoPiece) [Formulaires]![Imprimer]![Piece]) AND ((Statut.Statut) [Formulaires]![Imprimer]![Statut]));
Salut,
Le regroupement produit un résult qui est en erreur? ou un résultat qui
ne correspond pas à ce que tu attends? et, dans tous les cas, quelle est la
différence entre le résultat et ce qui, selon toi, devrait être le résultat?
Change the HAVING pour un WHERE... il est probablement plus judicieux
d'éliminer les enregistrements AVANT de faire les aggrégations et groupes.
En effet, aucune condition dans le HAVING n'implique d'aggrégats, c'est,
semble-t-il, donc un WHERE... ayant la condition dans le where simplifierait
l'ouvrage devant être fait, par la suite, par le GROUP BY (moins de groupes,
moins de comparaisons, moins de travail, plus rapide d'exécution).
Espérant être utile,
Vanderghast, Access MVP
"Lolo" <anonymous@discussions.microsoft.com> wrote in message
news:1775701c418e4$3ba621d0$a301280a@phx.gbl...
Bonjour! Le problème avec la requête suivante c'est
lorqu'il y a plusieur taux horaires diférent le
regroupement ne se fait plus sur le Numero. Pouvez-vous
m'aider. Merci d'avance!
SELECT Changements.Numero, Changements.NoProd1,
Changements.NoProd2, Changements.NoProd3,
Concepteur.Concepteur, Temps.NoPiece, Statut.Statut,
Changements.Titre, Last(Changements.DatVig) AS
DernierDeDatVig, Last(Changements.DatFin) AS
DernierDeDatFin, Last(DemChTech.TempsEst) AS
DernierDeTempsEst, [TauxHoraire]*[TempsEst] AS coutEsti,
Sum(Temps.Temps) AS SommeDeTemps, Temps.NoProjet, Last
(Temps.Desc) AS DernierDeDesc, Last(ListeTous.Desc) AS
DernierDeDesc1, Changements.NoProd1, Changements.NoProd2,
Changements.NoProd3, TauxHoraire.TauxHoraire, Sum
(Temps.Temps) AS SommeDeTemps1
FROM Statut INNER JOIN (LigneProd INNER JOIN
(((((Changements INNER JOIN Temps ON Changements.Numero Temps.NoProjet) INNER JOIN TauxHoraire ON
Temps.NoTauxHoraire = TauxHoraire.NoTauxHoraire) INNER
JOIN Concepteur ON Changements.NoConcep Concepteur.NoConcep) LEFT JOIN ListeTous ON Temps.NoPiece
= ListeTous.NumeroReg) INNER JOIN DemChTech ON
Changements.NoDct = DemChTech.NoDct) ON LigneProd.NoProd
= Changements.NoProd) ON Statut.NoStat Changements.NoStat
GROUP BY Changements.Numero, Changements.NoProd1,
Changements.NoProd2, Changements.NoProd3,
Concepteur.Concepteur, Temps.NoPiece, Statut.Statut,
Changements.Titre, [TauxHoraire]*[TempsEst],
Temps.NoProjet, Changements.NoProd1, Changements.NoProd2,
Changements.NoProd3, TauxHoraire.TauxHoraire
HAVING (((Changements.NoProd1)=[Formulaires]![Imprimer]!
[Produit]) AND ((Concepteur.Concepteur)=[Formulaires]!
[Imprimer]![Concep]) AND ((Temps.NoPiece)=[Formulaires]!
[Imprimer]![Piece]) AND ((Statut.Statut)=[Formulaires]!
[Imprimer]![Statut])) OR (((Changements.NoProd2) [Formulaires]![Imprimer]![Produit]) AND
((Concepteur.Concepteur)=[Formulaires]![Imprimer]!
[Concep]) AND ((Temps.NoPiece)=[Formulaires]![Imprimer]!
[Piece]) AND ((Statut.Statut)=[Formulaires]![Imprimer]!
[Statut])) OR (((Changements.NoProd3)=[Formulaires]!
[Imprimer]![Produit]) AND ((Concepteur.Concepteur) [Formulaires]![Imprimer]![Concep]) AND ((Temps.NoPiece) [Formulaires]![Imprimer]![Piece]) AND ((Statut.Statut) [Formulaires]![Imprimer]![Statut]));
Le regroupement produit un résult qui est en erreur? ou un résultat qui ne correspond pas à ce que tu attends? et, dans tous les cas, quelle est la différence entre le résultat et ce qui, selon toi, devrait être le résultat?
Change the HAVING pour un WHERE... il est probablement plus judicieux d'éliminer les enregistrements AVANT de faire les aggrégations et groupes. En effet, aucune condition dans le HAVING n'implique d'aggrégats, c'est, semble-t-il, donc un WHERE... ayant la condition dans le where simplifierait l'ouvrage devant être fait, par la suite, par le GROUP BY (moins de groupes, moins de comparaisons, moins de travail, plus rapide d'exécution).
Espérant être utile, Vanderghast, Access MVP
"Lolo" wrote in message news:1775701c418e4$3ba621d0$ Bonjour! Le problème avec la requête suivante c'est lorqu'il y a plusieur taux horaires diférent le regroupement ne se fait plus sur le Numero. Pouvez-vous m'aider. Merci d'avance!
SELECT Changements.Numero, Changements.NoProd1, Changements.NoProd2, Changements.NoProd3, Concepteur.Concepteur, Temps.NoPiece, Statut.Statut, Changements.Titre, Last(Changements.DatVig) AS DernierDeDatVig, Last(Changements.DatFin) AS DernierDeDatFin, Last(DemChTech.TempsEst) AS DernierDeTempsEst, [TauxHoraire]*[TempsEst] AS coutEsti, Sum(Temps.Temps) AS SommeDeTemps, Temps.NoProjet, Last (Temps.Desc) AS DernierDeDesc, Last(ListeTous.Desc) AS DernierDeDesc1, Changements.NoProd1, Changements.NoProd2, Changements.NoProd3, TauxHoraire.TauxHoraire, Sum (Temps.Temps) AS SommeDeTemps1 FROM Statut INNER JOIN (LigneProd INNER JOIN (((((Changements INNER JOIN Temps ON Changements.Numero Temps.NoProjet) INNER JOIN TauxHoraire ON Temps.NoTauxHoraire = TauxHoraire.NoTauxHoraire) INNER JOIN Concepteur ON Changements.NoConcep Concepteur.NoConcep) LEFT JOIN ListeTous ON Temps.NoPiece = ListeTous.NumeroReg) INNER JOIN DemChTech ON Changements.NoDct = DemChTech.NoDct) ON LigneProd.NoProd = Changements.NoProd) ON Statut.NoStat Changements.NoStat GROUP BY Changements.Numero, Changements.NoProd1, Changements.NoProd2, Changements.NoProd3, Concepteur.Concepteur, Temps.NoPiece, Statut.Statut, Changements.Titre, [TauxHoraire]*[TempsEst], Temps.NoProjet, Changements.NoProd1, Changements.NoProd2, Changements.NoProd3, TauxHoraire.TauxHoraire HAVING (((Changements.NoProd1)=[Formulaires]![Imprimer]! [Produit]) AND ((Concepteur.Concepteur)=[Formulaires]! [Imprimer]![Concep]) AND ((Temps.NoPiece)=[Formulaires]! [Imprimer]![Piece]) AND ((Statut.Statut)=[Formulaires]! [Imprimer]![Statut])) OR (((Changements.NoProd2) [Formulaires]![Imprimer]![Produit]) AND ((Concepteur.Concepteur)=[Formulaires]![Imprimer]! [Concep]) AND ((Temps.NoPiece)=[Formulaires]![Imprimer]! [Piece]) AND ((Statut.Statut)=[Formulaires]![Imprimer]! [Statut])) OR (((Changements.NoProd3)=[Formulaires]! [Imprimer]![Produit]) AND ((Concepteur.Concepteur) [Formulaires]![Imprimer]![Concep]) AND ((Temps.NoPiece) [Formulaires]![Imprimer]![Piece]) AND ((Statut.Statut) [Formulaires]![Imprimer]![Statut]));
Lo
J'ai trouvé la solution la voici, Merci pour vos suggestions, ça ma aidé! SELECT Changements.NoProd1, Changements.NoProd2, Changements.NoProd3, Concepteur.Concepteur, Temps.NoPiece, Statut.Statut, ListeTous.Desc, Changements.Numero, Avg(TauxHoraire_1.TauxHoraire) AS MoyenneDeTauxHoraire, Last(DemChTech.TempsEst) AS DernierDeTempsEst, [TauxHoraire_1]![TauxHoraire]* [DemChTech]![TempsEst] AS coutEsti, Avg (TauxHoraire.TauxHoraire) AS MoyenneDeTauxHoraire1, Sum (Temps.Temps) AS SommeDeTemps, Sum([TauxHoraire]! [TauxHoraire]*[Temps]) AS cout, Changements.Titre, Last (Temps.Date) AS DernierDeDate, Changements.DatFin, Changements.DatVig, [TauxHoraire_1]![TauxHoraire]* [TempsEst] AS coutEsti2, Avg([DemChTech]![TempsEst]) AS MoyTempEst FROM Statut INNER JOIN (LigneProd INNER JOIN ((((((Changements INNER JOIN Temps ON Changements.Numero = Temps.NoProjet) INNER JOIN TauxHoraire ON Temps.NoTauxHoraire = TauxHoraire.NoTauxHoraire) INNER JOIN Concepteur ON Changements.NoConcep = Concepteur.NoConcep) LEFT JOIN ListeTous ON Temps.NoPiece = ListeTous.NumeroReg) INNER JOIN DemChTech ON Changements.NoDct = DemChTech.NoDct) INNER JOIN TauxHoraire AS TauxHoraire_1 ON DemChTech.NoTauxHor = TauxHoraire_1.NoTauxHoraire) ON LigneProd.NoProd = Changements.NoProd) ON Statut.NoStat = Changements.NoStat GROUP BY Changements.NoProd1, Changements.NoProd2, Changements.NoProd3, Concepteur.Concepteur, Temps.NoPiece, Statut.Statut, ListeTous.Desc, Changements.Numero, [TauxHoraire_1]![TauxHoraire]* [DemChTech]![TempsEst], Changements.Titre, Changements.DatFin, Changements.DatVig, [TauxHoraire_1]! [TauxHoraire]*[TempsEst] HAVING (((Changements.NoProd1)=[Formulaires]![Imprimer]! [Produit]) AND ((Concepteur.Concepteur)=[Formulaires]! [Imprimer]![Concep]) AND ((Temps.NoPiece)=[Formulaires]! [Imprimer]![Piece]) AND ((Statut.Statut)=[Formulaires]! [Imprimer]![Statut])) OR (((Changements.NoProd2)= [Formulaires]![Imprimer]![Produit]) AND ((Concepteur.Concepteur)=[Formulaires]![Imprimer]! [Concep]) AND ((Temps.NoPiece)=[Formulaires]![Imprimer]! [Piece]) AND ((Statut.Statut)=[Formulaires]![Imprimer]! [Statut])) OR (((Changements.NoProd3)=[Formulaires]! [Imprimer]![Produit]) AND ((Concepteur.Concepteur)= [Formulaires]![Imprimer]![Concep]) AND ((Temps.NoPiece)= [Formulaires]![Imprimer]![Piece]) AND ((Statut.Statut)= [Formulaires]![Imprimer]![Statut]));
-----Message d'origine----- Salut,
Le regroupement produit un résult qui est en erreur? ou un résultat qui
ne correspond pas à ce que tu attends? et, dans tous les cas, quelle est la
différence entre le résultat et ce qui, selon toi, devrait être le résultat?
Change the HAVING pour un WHERE... il est probablement plus judicieux
d'éliminer les enregistrements AVANT de faire les aggrégations et groupes.
En effet, aucune condition dans le HAVING n'implique d'aggrégats, c'est,
semble-t-il, donc un WHERE... ayant la condition dans le where simplifierait
l'ouvrage devant être fait, par la suite, par le GROUP BY (moins de groupes,
moins de comparaisons, moins de travail, plus rapide d'exécution).
Espérant être utile, Vanderghast, Access MVP
"Lolo" wrote in message
news:1775701c418e4$3ba621d0$ Bonjour! Le problème avec la requête suivante c'est lorqu'il y a plusieur taux horaires diférent le regroupement ne se fait plus sur le Numero. Pouvez-vous m'aider. Merci d'avance!
SELECT Changements.Numero, Changements.NoProd1, Changements.NoProd2, Changements.NoProd3, Concepteur.Concepteur, Temps.NoPiece, Statut.Statut, Changements.Titre, Last(Changements.DatVig) AS DernierDeDatVig, Last(Changements.DatFin) AS DernierDeDatFin, Last(DemChTech.TempsEst) AS DernierDeTempsEst, [TauxHoraire]*[TempsEst] AS coutEsti, Sum(Temps.Temps) AS SommeDeTemps, Temps.NoProjet, Last (Temps.Desc) AS DernierDeDesc, Last(ListeTous.Desc) AS DernierDeDesc1, Changements.NoProd1, Changements.NoProd2, Changements.NoProd3, TauxHoraire.TauxHoraire, Sum (Temps.Temps) AS SommeDeTemps1 FROM Statut INNER JOIN (LigneProd INNER JOIN (((((Changements INNER JOIN Temps ON Changements.Numero = Temps.NoProjet) INNER JOIN TauxHoraire ON Temps.NoTauxHoraire = TauxHoraire.NoTauxHoraire) INNER JOIN Concepteur ON Changements.NoConcep = Concepteur.NoConcep) LEFT JOIN ListeTous ON Temps.NoPiece = ListeTous.NumeroReg) INNER JOIN DemChTech ON Changements.NoDct = DemChTech.NoDct) ON LigneProd.NoProd = Changements.NoProd) ON Statut.NoStat = Changements.NoStat GROUP BY Changements.Numero, Changements.NoProd1, Changements.NoProd2, Changements.NoProd3, Concepteur.Concepteur, Temps.NoPiece, Statut.Statut, Changements.Titre, [TauxHoraire]*[TempsEst], Temps.NoProjet, Changements.NoProd1, Changements.NoProd2, Changements.NoProd3, TauxHoraire.TauxHoraire HAVING (((Changements.NoProd1)=[Formulaires]![Imprimer]! [Produit]) AND ((Concepteur.Concepteur)=[Formulaires]! [Imprimer]![Concep]) AND ((Temps.NoPiece)=[Formulaires]! [Imprimer]![Piece]) AND ((Statut.Statut)=[Formulaires]! [Imprimer]![Statut])) OR (((Changements.NoProd2)= [Formulaires]![Imprimer]![Produit]) AND ((Concepteur.Concepteur)=[Formulaires]![Imprimer]! [Concep]) AND ((Temps.NoPiece)=[Formulaires]![Imprimer]! [Piece]) AND ((Statut.Statut)=[Formulaires]![Imprimer]! [Statut])) OR (((Changements.NoProd3)=[Formulaires]! [Imprimer]![Produit]) AND ((Concepteur.Concepteur)= [Formulaires]![Imprimer]![Concep]) AND ((Temps.NoPiece)= [Formulaires]![Imprimer]![Piece]) AND ((Statut.Statut)= [Formulaires]![Imprimer]![Statut]));
.
J'ai trouvé la solution la voici, Merci pour vos
suggestions, ça ma aidé!
SELECT Changements.NoProd1, Changements.NoProd2,
Changements.NoProd3, Concepteur.Concepteur,
Temps.NoPiece, Statut.Statut, ListeTous.Desc,
Changements.Numero, Avg(TauxHoraire_1.TauxHoraire) AS
MoyenneDeTauxHoraire, Last(DemChTech.TempsEst) AS
DernierDeTempsEst, [TauxHoraire_1]![TauxHoraire]*
[DemChTech]![TempsEst] AS coutEsti, Avg
(TauxHoraire.TauxHoraire) AS MoyenneDeTauxHoraire1, Sum
(Temps.Temps) AS SommeDeTemps, Sum([TauxHoraire]!
[TauxHoraire]*[Temps]) AS cout, Changements.Titre, Last
(Temps.Date) AS DernierDeDate, Changements.DatFin,
Changements.DatVig, [TauxHoraire_1]![TauxHoraire]*
[TempsEst] AS coutEsti2, Avg([DemChTech]![TempsEst]) AS
MoyTempEst
FROM Statut INNER JOIN (LigneProd INNER JOIN
((((((Changements INNER JOIN Temps ON Changements.Numero
= Temps.NoProjet) INNER JOIN TauxHoraire ON
Temps.NoTauxHoraire = TauxHoraire.NoTauxHoraire) INNER
JOIN Concepteur ON Changements.NoConcep =
Concepteur.NoConcep) LEFT JOIN ListeTous ON Temps.NoPiece
= ListeTous.NumeroReg) INNER JOIN DemChTech ON
Changements.NoDct = DemChTech.NoDct) INNER JOIN
TauxHoraire AS TauxHoraire_1 ON DemChTech.NoTauxHor =
TauxHoraire_1.NoTauxHoraire) ON LigneProd.NoProd =
Changements.NoProd) ON Statut.NoStat = Changements.NoStat
GROUP BY Changements.NoProd1, Changements.NoProd2,
Changements.NoProd3, Concepteur.Concepteur,
Temps.NoPiece, Statut.Statut, ListeTous.Desc,
Changements.Numero, [TauxHoraire_1]![TauxHoraire]*
[DemChTech]![TempsEst], Changements.Titre,
Changements.DatFin, Changements.DatVig, [TauxHoraire_1]!
[TauxHoraire]*[TempsEst]
HAVING (((Changements.NoProd1)=[Formulaires]![Imprimer]!
[Produit]) AND ((Concepteur.Concepteur)=[Formulaires]!
[Imprimer]![Concep]) AND ((Temps.NoPiece)=[Formulaires]!
[Imprimer]![Piece]) AND ((Statut.Statut)=[Formulaires]!
[Imprimer]![Statut])) OR (((Changements.NoProd2)=
[Formulaires]![Imprimer]![Produit]) AND
((Concepteur.Concepteur)=[Formulaires]![Imprimer]!
[Concep]) AND ((Temps.NoPiece)=[Formulaires]![Imprimer]!
[Piece]) AND ((Statut.Statut)=[Formulaires]![Imprimer]!
[Statut])) OR (((Changements.NoProd3)=[Formulaires]!
[Imprimer]![Produit]) AND ((Concepteur.Concepteur)=
[Formulaires]![Imprimer]![Concep]) AND ((Temps.NoPiece)=
[Formulaires]![Imprimer]![Piece]) AND ((Statut.Statut)=
[Formulaires]![Imprimer]![Statut]));
-----Message d'origine-----
Salut,
Le regroupement produit un résult qui est en erreur?
ou un résultat qui
ne correspond pas à ce que tu attends? et, dans tous les
cas, quelle est la
différence entre le résultat et ce qui, selon toi,
devrait être le résultat?
Change the HAVING pour un WHERE... il est
probablement plus judicieux
d'éliminer les enregistrements AVANT de faire les
aggrégations et groupes.
En effet, aucune condition dans le HAVING n'implique
d'aggrégats, c'est,
semble-t-il, donc un WHERE... ayant la condition dans le
where simplifierait
l'ouvrage devant être fait, par la suite, par le GROUP
BY (moins de groupes,
moins de comparaisons, moins de travail, plus rapide
d'exécution).
Espérant être utile,
Vanderghast, Access MVP
"Lolo" <anonymous@discussions.microsoft.com> wrote in
message
news:1775701c418e4$3ba621d0$a301280a@phx.gbl...
Bonjour! Le problème avec la requête suivante c'est
lorqu'il y a plusieur taux horaires diférent le
regroupement ne se fait plus sur le Numero. Pouvez-vous
m'aider. Merci d'avance!
SELECT Changements.Numero, Changements.NoProd1,
Changements.NoProd2, Changements.NoProd3,
Concepteur.Concepteur, Temps.NoPiece, Statut.Statut,
Changements.Titre, Last(Changements.DatVig) AS
DernierDeDatVig, Last(Changements.DatFin) AS
DernierDeDatFin, Last(DemChTech.TempsEst) AS
DernierDeTempsEst, [TauxHoraire]*[TempsEst] AS coutEsti,
Sum(Temps.Temps) AS SommeDeTemps, Temps.NoProjet, Last
(Temps.Desc) AS DernierDeDesc, Last(ListeTous.Desc) AS
DernierDeDesc1, Changements.NoProd1, Changements.NoProd2,
Changements.NoProd3, TauxHoraire.TauxHoraire, Sum
(Temps.Temps) AS SommeDeTemps1
FROM Statut INNER JOIN (LigneProd INNER JOIN
(((((Changements INNER JOIN Temps ON Changements.Numero =
Temps.NoProjet) INNER JOIN TauxHoraire ON
Temps.NoTauxHoraire = TauxHoraire.NoTauxHoraire) INNER
JOIN Concepteur ON Changements.NoConcep =
Concepteur.NoConcep) LEFT JOIN ListeTous ON Temps.NoPiece
= ListeTous.NumeroReg) INNER JOIN DemChTech ON
Changements.NoDct = DemChTech.NoDct) ON LigneProd.NoProd
= Changements.NoProd) ON Statut.NoStat =
Changements.NoStat
GROUP BY Changements.Numero, Changements.NoProd1,
Changements.NoProd2, Changements.NoProd3,
Concepteur.Concepteur, Temps.NoPiece, Statut.Statut,
Changements.Titre, [TauxHoraire]*[TempsEst],
Temps.NoProjet, Changements.NoProd1, Changements.NoProd2,
Changements.NoProd3, TauxHoraire.TauxHoraire
HAVING (((Changements.NoProd1)=[Formulaires]![Imprimer]!
[Produit]) AND ((Concepteur.Concepteur)=[Formulaires]!
[Imprimer]![Concep]) AND ((Temps.NoPiece)=[Formulaires]!
[Imprimer]![Piece]) AND ((Statut.Statut)=[Formulaires]!
[Imprimer]![Statut])) OR (((Changements.NoProd2)=
[Formulaires]![Imprimer]![Produit]) AND
((Concepteur.Concepteur)=[Formulaires]![Imprimer]!
[Concep]) AND ((Temps.NoPiece)=[Formulaires]![Imprimer]!
[Piece]) AND ((Statut.Statut)=[Formulaires]![Imprimer]!
[Statut])) OR (((Changements.NoProd3)=[Formulaires]!
[Imprimer]![Produit]) AND ((Concepteur.Concepteur)=
[Formulaires]![Imprimer]![Concep]) AND ((Temps.NoPiece)=
[Formulaires]![Imprimer]![Piece]) AND ((Statut.Statut)=
[Formulaires]![Imprimer]![Statut]));
J'ai trouvé la solution la voici, Merci pour vos suggestions, ça ma aidé! SELECT Changements.NoProd1, Changements.NoProd2, Changements.NoProd3, Concepteur.Concepteur, Temps.NoPiece, Statut.Statut, ListeTous.Desc, Changements.Numero, Avg(TauxHoraire_1.TauxHoraire) AS MoyenneDeTauxHoraire, Last(DemChTech.TempsEst) AS DernierDeTempsEst, [TauxHoraire_1]![TauxHoraire]* [DemChTech]![TempsEst] AS coutEsti, Avg (TauxHoraire.TauxHoraire) AS MoyenneDeTauxHoraire1, Sum (Temps.Temps) AS SommeDeTemps, Sum([TauxHoraire]! [TauxHoraire]*[Temps]) AS cout, Changements.Titre, Last (Temps.Date) AS DernierDeDate, Changements.DatFin, Changements.DatVig, [TauxHoraire_1]![TauxHoraire]* [TempsEst] AS coutEsti2, Avg([DemChTech]![TempsEst]) AS MoyTempEst FROM Statut INNER JOIN (LigneProd INNER JOIN ((((((Changements INNER JOIN Temps ON Changements.Numero = Temps.NoProjet) INNER JOIN TauxHoraire ON Temps.NoTauxHoraire = TauxHoraire.NoTauxHoraire) INNER JOIN Concepteur ON Changements.NoConcep = Concepteur.NoConcep) LEFT JOIN ListeTous ON Temps.NoPiece = ListeTous.NumeroReg) INNER JOIN DemChTech ON Changements.NoDct = DemChTech.NoDct) INNER JOIN TauxHoraire AS TauxHoraire_1 ON DemChTech.NoTauxHor = TauxHoraire_1.NoTauxHoraire) ON LigneProd.NoProd = Changements.NoProd) ON Statut.NoStat = Changements.NoStat GROUP BY Changements.NoProd1, Changements.NoProd2, Changements.NoProd3, Concepteur.Concepteur, Temps.NoPiece, Statut.Statut, ListeTous.Desc, Changements.Numero, [TauxHoraire_1]![TauxHoraire]* [DemChTech]![TempsEst], Changements.Titre, Changements.DatFin, Changements.DatVig, [TauxHoraire_1]! [TauxHoraire]*[TempsEst] HAVING (((Changements.NoProd1)=[Formulaires]![Imprimer]! [Produit]) AND ((Concepteur.Concepteur)=[Formulaires]! [Imprimer]![Concep]) AND ((Temps.NoPiece)=[Formulaires]! [Imprimer]![Piece]) AND ((Statut.Statut)=[Formulaires]! [Imprimer]![Statut])) OR (((Changements.NoProd2)= [Formulaires]![Imprimer]![Produit]) AND ((Concepteur.Concepteur)=[Formulaires]![Imprimer]! [Concep]) AND ((Temps.NoPiece)=[Formulaires]![Imprimer]! [Piece]) AND ((Statut.Statut)=[Formulaires]![Imprimer]! [Statut])) OR (((Changements.NoProd3)=[Formulaires]! [Imprimer]![Produit]) AND ((Concepteur.Concepteur)= [Formulaires]![Imprimer]![Concep]) AND ((Temps.NoPiece)= [Formulaires]![Imprimer]![Piece]) AND ((Statut.Statut)= [Formulaires]![Imprimer]![Statut]));
-----Message d'origine----- Salut,
Le regroupement produit un résult qui est en erreur? ou un résultat qui
ne correspond pas à ce que tu attends? et, dans tous les cas, quelle est la
différence entre le résultat et ce qui, selon toi, devrait être le résultat?
Change the HAVING pour un WHERE... il est probablement plus judicieux
d'éliminer les enregistrements AVANT de faire les aggrégations et groupes.
En effet, aucune condition dans le HAVING n'implique d'aggrégats, c'est,
semble-t-il, donc un WHERE... ayant la condition dans le where simplifierait
l'ouvrage devant être fait, par la suite, par le GROUP BY (moins de groupes,
moins de comparaisons, moins de travail, plus rapide d'exécution).
Espérant être utile, Vanderghast, Access MVP
"Lolo" wrote in message
news:1775701c418e4$3ba621d0$ Bonjour! Le problème avec la requête suivante c'est lorqu'il y a plusieur taux horaires diférent le regroupement ne se fait plus sur le Numero. Pouvez-vous m'aider. Merci d'avance!
SELECT Changements.Numero, Changements.NoProd1, Changements.NoProd2, Changements.NoProd3, Concepteur.Concepteur, Temps.NoPiece, Statut.Statut, Changements.Titre, Last(Changements.DatVig) AS DernierDeDatVig, Last(Changements.DatFin) AS DernierDeDatFin, Last(DemChTech.TempsEst) AS DernierDeTempsEst, [TauxHoraire]*[TempsEst] AS coutEsti, Sum(Temps.Temps) AS SommeDeTemps, Temps.NoProjet, Last (Temps.Desc) AS DernierDeDesc, Last(ListeTous.Desc) AS DernierDeDesc1, Changements.NoProd1, Changements.NoProd2, Changements.NoProd3, TauxHoraire.TauxHoraire, Sum (Temps.Temps) AS SommeDeTemps1 FROM Statut INNER JOIN (LigneProd INNER JOIN (((((Changements INNER JOIN Temps ON Changements.Numero = Temps.NoProjet) INNER JOIN TauxHoraire ON Temps.NoTauxHoraire = TauxHoraire.NoTauxHoraire) INNER JOIN Concepteur ON Changements.NoConcep = Concepteur.NoConcep) LEFT JOIN ListeTous ON Temps.NoPiece = ListeTous.NumeroReg) INNER JOIN DemChTech ON Changements.NoDct = DemChTech.NoDct) ON LigneProd.NoProd = Changements.NoProd) ON Statut.NoStat = Changements.NoStat GROUP BY Changements.Numero, Changements.NoProd1, Changements.NoProd2, Changements.NoProd3, Concepteur.Concepteur, Temps.NoPiece, Statut.Statut, Changements.Titre, [TauxHoraire]*[TempsEst], Temps.NoProjet, Changements.NoProd1, Changements.NoProd2, Changements.NoProd3, TauxHoraire.TauxHoraire HAVING (((Changements.NoProd1)=[Formulaires]![Imprimer]! [Produit]) AND ((Concepteur.Concepteur)=[Formulaires]! [Imprimer]![Concep]) AND ((Temps.NoPiece)=[Formulaires]! [Imprimer]![Piece]) AND ((Statut.Statut)=[Formulaires]! [Imprimer]![Statut])) OR (((Changements.NoProd2)= [Formulaires]![Imprimer]![Produit]) AND ((Concepteur.Concepteur)=[Formulaires]![Imprimer]! [Concep]) AND ((Temps.NoPiece)=[Formulaires]![Imprimer]! [Piece]) AND ((Statut.Statut)=[Formulaires]![Imprimer]! [Statut])) OR (((Changements.NoProd3)=[Formulaires]! [Imprimer]![Produit]) AND ((Concepteur.Concepteur)= [Formulaires]![Imprimer]![Concep]) AND ((Temps.NoPiece)= [Formulaires]![Imprimer]![Piece]) AND ((Statut.Statut)= [Formulaires]![Imprimer]![Statut]));