Requête

Le
hidaholola
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 à laquell=
e
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Richard_35
Le #20567241
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
.



hidaholola
Le #20567351
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
hidaholola
Le #20567341
On 16 nov, 18:51, 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 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
Publicité
Poster une réponse
Anonyme