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

Requête

3 réponses
Avatar
hidaholola
Bonjour,
je bute sur une requ=EAte regroupement:pour des raisons de tra=E7abilit=E9,
je dois conserver les stocks tout au long de la vie du produit et je
n'arrive pas =E0 ressortir le dernier stock pour chaque produit
tbStocks comprenant IDStock,DateStock,N=B0Cuve,VolumeCuve.

SELECT tbStocks.N=B0Cuve, Max(tbStocks.DateStock) AS MaxDeDateStock
FROM tbStocks
GROUP BY tbStocks.N=B0Cuve;
cette requ=EAte me donne bien chaque cuve et la derni=E8re date =E0 laquell=
e
le volume est actuel, mais pas le volume soit 21 enregistrements pour
21 cuves

Si je rajoute le volume:
SELECT tbStocks.N=B0Cuve, Max(tbStocks.DateStock) AS MaxDeDateStock,
tbStocks.VolumeCuve
FROM tbStocks
GROUP BY tbStocks.N=B0Cuve, tbStocks.VolumeCuve;
ca me donne 88 enregistrements inexploitables.
Merci de m'aider
R=E9gis

3 réponses

Avatar
Richard_35
Bonjour hidaholola,

Il faut bien comprendre le principe du GROUP BY :

SELECT tbStocks.N°Cuve, Max(tbStocks.DateStock) AS MaxDeDateStock
FROM tbStocks
GROUP BY tbStocks.N°Cuve;
==> te donne le Max(tbStocks.DateStock) pour un n° de cuve : il en résulte
une ligne par n° de cuve.

SELECT tbStocks.N°Cuve, Max(tbStocks.DateStock) AS MaxDeDateStock,
tbStocks.VolumeCuve
FROM tbStocks
GROUP BY tbStocks.N°Cuve, tbStocks.VolumeCuve;
==> te donne le Max(tbStocks.DateStock) pour un couple n° de cuve/VolumeCuve
: il en résulte une ligne par n° de cuve/VolumeCuve.

Le fait que la 2ème requête te donne un nombre diffrérent de la 1ère, veut
dire que un même n° de cuve peut avoir, dans la table tbStocks, un volume
différent : je ne sais pas si cela est logique, toi seul peute dire.

Quoiqu'il en soit, pour résoudre ton problème, il faut partir de la 1ère
requête (qui est OK) et la lier avec la table tbStocks, via
tbStocks.N°Cuve/MaxDeDateStock, ainsi tu pourras retrouver la valeur du champ
VolumeCuve.

ATTENTION : si il y a plusieurs fois la même MaxDeDateStock pour un même
N°Cuve, la requête te restituera plusieurs enregistrements.

Dis-nous et bon courage,
Richard.


"hidaholola" a écrit :

Bonjour,
je bute sur une requête regroupement:pour des raisons de traçabilité,
je dois conserver les stocks tout au long de la vie du produit et je
n'arrive pas à ressortir le dernier stock pour chaque produit
tbStocks comprenant IDStock,DateStock,N°Cuve,VolumeCuve.

SELECT tbStocks.N°Cuve, Max(tbStocks.DateStock) AS MaxDeDateStock
FROM tbStocks
GROUP BY tbStocks.N°Cuve;
cette requête me donne bien chaque cuve et la dernière date à laquelle
le volume est actuel, mais pas le volume soit 21 enregistrements pour
21 cuves

Si je rajoute le volume:
SELECT tbStocks.N°Cuve, Max(tbStocks.DateStock) AS MaxDeDateStock,
tbStocks.VolumeCuve
FROM tbStocks
GROUP BY tbStocks.N°Cuve, tbStocks.VolumeCuve;
ca me donne 88 enregistrements inexploitables.
Merci de m'aider
Régis
.



Avatar
hidaholola
On 16 nov, 18:30, Richard_35
wrote:
Bonjour hidaholola,

Il faut bien comprendre le principe du GROUP BY :

SELECT  tbStocks.N°Cuve, Max(tbStocks.DateStock) AS MaxDeDateStock
FROM tbStocks
GROUP BY tbStocks.N°Cuve;
==> te donne le Max(tbStocks.DateStock) pour un n° de cuve : il en résulte
une ligne par n° de cuve.

SELECT tbStocks.N°Cuve, Max(tbStocks.DateStock) AS MaxDeDateStock,
tbStocks.VolumeCuve
FROM tbStocks
GROUP BY tbStocks.N°Cuve, tbStocks.VolumeCuve;
==> te donne le Max(tbStocks.DateStock) pour un couple n° de cuve/V olumeCuve
: il en résulte une ligne par n° de cuve/VolumeCuve.

Le fait que la 2ème requête te donne un nombre diffrérent de la 1 ère, veut
dire que un même n° de cuve peut avoir, dans la table tbStocks, un vo lume
différent : je ne sais pas si cela est logique, toi seul peute dire.

Quoiqu'il en soit, pour résoudre ton problème, il faut partir de la 1 ère
requête (qui est OK) et la lier avec la table tbStocks, via
tbStocks.N°Cuve/MaxDeDateStock, ainsi tu pourras retrouver la valeur du champ
VolumeCuve.

ATTENTION : si il y a plusieurs fois la même MaxDeDateStock pour un m ême
N°Cuve, la requête te restituera plusieurs enregistrements.

Dis-nous et bon courage,
Richard.

"hidaholola" a écrit :

> Bonjour,
> je bute sur une requête regroupement:pour des raisons de traçabilit é,
> je dois conserver les stocks tout au long de la vie du produit et je
> n'arrive pas à ressortir le dernier stock pour chaque produit
> tbStocks comprenant IDStock,DateStock,N°Cuve,VolumeCuve.

> SELECT  tbStocks.N°Cuve, Max(tbStocks.DateStock) AS MaxDeDateStock
> FROM tbStocks
> GROUP BY tbStocks.N°Cuve;
> cette requête me donne bien chaque cuve et la dernière date à laq uelle
> le volume est actuel, mais pas le volume soit 21 enregistrements pour
> 21 cuves

> Si je rajoute le volume:
> SELECT tbStocks.N°Cuve, Max(tbStocks.DateStock) AS MaxDeDateStock,
> tbStocks.VolumeCuve
> FROM tbStocks
> GROUP BY tbStocks.N°Cuve, tbStocks.VolumeCuve;
> ca me donne 88 enregistrements inexploitables.
> Merci de m'aider
> Régis
> .



Merci Richard,
Je suis tout a fait d'accord avec toi, mais comment lier la 1ere
requête avec la table vu que la clé primaire n'est pas incluse?
Sinon, c'est normal qu'il y ait le même N° de cuve avec plusieurs
volumes (d'où mon problème)
cordialement
Avatar
hidaholola
On 16 nov, 18:51, hidaholola wrote:
On 16 nov, 18:30, Richard_35
wrote:



> Bonjour hidaholola,

> Il faut bien comprendre le principe du GROUP BY :

> SELECT  tbStocks.N°Cuve, Max(tbStocks.DateStock) AS MaxDeDateStock
> FROM tbStocks
> GROUP BY tbStocks.N°Cuve;
> ==> te donne le Max(tbStocks.DateStock) pour un n° de cuve : il e n résulte
> une ligne par n° de cuve.

> SELECT tbStocks.N°Cuve, Max(tbStocks.DateStock) AS MaxDeDateStock,
> tbStocks.VolumeCuve
> FROM tbStocks
> GROUP BY tbStocks.N°Cuve, tbStocks.VolumeCuve;
> ==> te donne le Max(tbStocks.DateStock) pour un couple n° de cuve /VolumeCuve
> : il en résulte une ligne par n° de cuve/VolumeCuve.

> Le fait que la 2ème requête te donne un nombre diffrérent de la 1 ère, veut
> dire que un même n° de cuve peut avoir, dans la table tbStocks, un volume
> différent : je ne sais pas si cela est logique, toi seul peute dire.

> Quoiqu'il en soit, pour résoudre ton problème, il faut partir de la 1ère
> requête (qui est OK) et la lier avec la table tbStocks, via
> tbStocks.N°Cuve/MaxDeDateStock, ainsi tu pourras retrouver la valeur du champ
> VolumeCuve.

> ATTENTION : si il y a plusieurs fois la même MaxDeDateStock pour un m ême
> N°Cuve, la requête te restituera plusieurs enregistrements.

> Dis-nous et bon courage,
> Richard.

> "hidaholola" a écrit :

> > Bonjour,
> > je bute sur une requête regroupement:pour des raisons de traçabil ité,
> > je dois conserver les stocks tout au long de la vie du produit et je
> > n'arrive pas à ressortir le dernier stock pour chaque produit
> > tbStocks comprenant IDStock,DateStock,N°Cuve,VolumeCuve.

> > SELECT  tbStocks.N°Cuve, Max(tbStocks.DateStock) AS MaxDeDateStoc k
> > FROM tbStocks
> > GROUP BY tbStocks.N°Cuve;
> > cette requête me donne bien chaque cuve et la dernière date à l aquelle
> > le volume est actuel, mais pas le volume soit 21 enregistrements pour
> > 21 cuves

> > Si je rajoute le volume:
> > SELECT tbStocks.N°Cuve, Max(tbStocks.DateStock) AS MaxDeDateStock,
> > tbStocks.VolumeCuve
> > FROM tbStocks
> > GROUP BY tbStocks.N°Cuve, tbStocks.VolumeCuve;
> > ca me donne 88 enregistrements inexploitables.
> > Merci de m'aider
> > Régis
> > .

Merci Richard,
Je suis tout a fait d'accord avec toi, mais comment lier la 1ere
requête avec la table vu que la clé primaire n'est pas incluse?
Sinon, c'est normal qu'il y ait le même N° de cuve avec plusieurs
volumes (d'où mon problème)
cordialement



Ca y est, j'y suis arrivé en liant effectivement avec les 2 Champs,
merci une nouvelle fois
Régis