Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

CRITÈRE DERNIÈRE DATE D'ACHAT

2 réponses
Avatar
JACQUES
Bonjour voici la correspondence des derniers jours. Je=20
suis toujours =E0 la recherche d'une solution.
=20

=20

merci de votre aide.
j'ai fait la requ=EAte en SQL=20
et le r=E9sultat me donne seulement la derni=E8re date de=20
commande.Elle retourne seulement un enregistrement.
alors que je cherche la derni=E8re date pour chaque produits.
dans la case crit=E8re il y avait :=20
where proinv =3D M.proinv)

voici le code SQL
SELECT m.datlist, m.proinv, m.couinv, m.datachat, m.qteinv
FROM m

where datachat =3D=20
(select Max(Datachat) from m
where proinv =3D M.proinv)



>-----Message d'origine-----
>Il t'est en effet pleinement interdit de modifier les=20
>donn=E9es d'une requ=EAte g=E9n=E9r=E9e par un regroupement=20
>(n=E9cessaire =E0 un MAX).
>
>Tu peux contourner le probl=E8me mais le seul moyen que je=20
>vois est d'utiliser une sous-requ=EAte et corr=E9l=E9e du=20
>surcroit ! Cela oblige donc de passer par une requ=EAte=20
>uniquement en SQL (l'assistant =E0 ici ses limites)
>
>On peut alors imaginer la requete suivante :=20
>
>select datlist,proinv,couinv,datachat,qteinv
>From MaTable M
>where datachat =3D=20
>(select Max(Datachat) from MaTable
> where proinv =3D M.proinv)
>
>Si j'ai bien compris ton probl=E8me, cela devrait (j'esp=E8re=20
>marcher). sinon C q j'ai mal compris qlqchose :-(
>Bon courage.
>
>Fred. M.
>
>>-----Message d'origine-----
>>J'ai une liste de prix que j'ai re=E7u d'un fournisseur en=20
>>excel. Je l'ai converti en access.
>>Dans la table j'ai les champs suivants : =20
>>
>>datlist proinv couinv datachat qteinv
>>
>>28-09-03 tomate 8.00 15-08-03=09
>>
>>28-09-03 tomate 10.00 20-09-03=09
>>
>>28-09-03 tomate 8.00 26-09-03=09
>>
>>28-09-03 pomme 5.00 10-08-03=09
>>
>>28-09-03 pomme 4.50 11-09-03=09
>>
>>28-09-03pomme 3.5 27-09-03=09
>>
>>Dans ma requ=EAte je voudrais avoir la derni=E8re date=20
>d'achat=20
>>de chaque produit (datachat). Comme cela.
>>
>>28-09-03 tomate 10.00 20-09-03
>>=09
>>28-09-03 pomme 3.5 27-09-03=09
>>
>>Je ne r=E9ussis pas =E0 trouver le crit=E8re pour le champ=20
>>datachat qui va me donner la derni=E8re date d'achat de=20
>>chaque produits.J'ai d=E9j=E0 essay=E9 avec un regroupement et=20
>>utilis=E9 Max dans le champ datachat. Par contre avec=20
cette=20
>>fa=E7on de faire il m'est impossible d'aller ajouter une=20
>>quantit=E9 dans le champ qteinv. Donc je cherche une fa=E7on=20
>>de pouvoir contourner le probl=E8me.
>>La liste de prix officiel contient 1500=20
>>enregistrements pour 75 produits diff=E9rents.
>>
>>Merci de votre aide.
>>

2 réponses

Avatar
Daniel Carollo
Bonjour Jacques!

C'est un peu caca comme demande d'aide, vous auriez pu prendre la peine
d'editer un nouveau message...

A cause de la facon dont Jet combine les requetes et les sous-requetes, il
n'est pas possible (ou si c'est possible, je n'ai pas trouve comment faire)
d'obtenir une requete pour faire ce que vous voulez d'un coup d'un seul. En
plus, ce sera tres difficile (sinon impossible) a faire sans avoir un
identifiant unique pour chaque enregistrement. Il va donc falloir ajouter
une colonne d'identifiant a la table.

Il faut tout d'abord une requete pour recuperer chaque dernier achat, et
mettre ca dans une table temporaire:

SELECT Max(M.datachat) AS DernierAchat, M.proinv INTO MaTableTemp
FROM M
GROUP BY M.proinv;

Ensuite, on fait une requete our recuperer l'identifiant des enregistremts
ainsi mis de cote, et on met ces identifiants dans une deuxieme table
temporaire:
SELECT M.id INTO MaTableTemp2
FROM MaTableTemp INNER JOIN M ON (MaTableTemp.proinv = M.proinv) AND
(MaTableTemp.DernierAchat = M.datachat);

La derniere requete nous permet de selectionner les enregistrements dans la
table d'origine, et de les editer:
SELECT M.id, M.datachat, M.proinv, M.couinv, M.qte
FROM M INNER JOIN MaTableTemp2 ON M.id = MaTableTemp2.id;

Voila, j'espere que ca vous aide a demarrer.

--
Daniel :-)

Computing Technologies International - www.computing-tech.com - We
provide solutions...

"JACQUES" wrote in message
news:1c7101c388ec$0d85fc90$
Bonjour voici la correspondence des derniers jours. Je
suis toujours à la recherche d'une solution.
Avatar
jacques
Un grand merci pour votre aide
mon problème est réglé.

-----Message d'origine-----
Bonjour Jacques!

C'est un peu caca comme demande d'aide, vous auriez pu
prendre la peine

d'editer un nouveau message...

A cause de la facon dont Jet combine les requetes et les
sous-requetes, il

n'est pas possible (ou si c'est possible, je n'ai pas
trouve comment faire)

d'obtenir une requete pour faire ce que vous voulez d'un
coup d'un seul. En

plus, ce sera tres difficile (sinon impossible) a faire
sans avoir un

identifiant unique pour chaque enregistrement. Il va donc
falloir ajouter

une colonne d'identifiant a la table.

Il faut tout d'abord une requete pour recuperer chaque
dernier achat, et

mettre ca dans une table temporaire:

SELECT Max(M.datachat) AS DernierAchat, M.proinv INTO
MaTableTemp

FROM M
GROUP BY M.proinv;

Ensuite, on fait une requete our recuperer l'identifiant
des enregistremts

ainsi mis de cote, et on met ces identifiants dans une
deuxieme table

temporaire:
SELECT M.id INTO MaTableTemp2
FROM MaTableTemp INNER JOIN M ON (MaTableTemp.proinv =
M.proinv) AND

(MaTableTemp.DernierAchat = M.datachat);

La derniere requete nous permet de selectionner les
enregistrements dans la

table d'origine, et de les editer:
SELECT M.id, M.datachat, M.proinv, M.couinv, M.qte
FROM M INNER JOIN MaTableTemp2 ON M.id = MaTableTemp2.id;

Voila, j'espere que ca vous aide a demarrer.

--
Daniel :-)

Computing Technologies International - www.computing-
tech.com - We

provide solutions...

"JACQUES" wrote in message
news:1c7101c388ec$0d85fc90$
Bonjour voici la correspondence des derniers jours. Je
suis toujours à la recherche d'une solution.




.