OVH Cloud OVH Cloud

Problème de requête!

2 réponses
Avatar
Lolo
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]));

2 réponses

Avatar
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]));
Avatar
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]));


.