Bonjour à tous,
j'ai fait une 'petite' erreur sur une BD de traçabilité au boulot. J'ai fait un UPDATE SET sans WHERE Erreur de noob, je sais. 30200 rows affected. glurps.
Les données perdues sont récupérables ailleurs dans la BD. Ouf. Le problème, c'est qu'à part quelques simples requêtes, je n'y connais pas grand chose
Pour faire au plus court, les tables qui m'intéressent sont celles-ci :
lot_stockage (OID, lot_ID, begin_time, end_time, quantité soutirée, etc.)
lnk_lot_tracing (OID, lot_in, lot_out, begin_time, end_time, quantité, etc.)
Ce que j'ai fichu en l'air c'est, dans lot_stockage le end_time qui est maintenant null et les quantités soutirées = 0
les lots de stockage (lot_ID) sont des nVARCHAR(14) du style STO12365000001, ils sont uniques, bien que pas la clé primaire de lot_stockage. Il existe d'autres tables dans lesquelles j'aurai au lieu des STO, des TIR, REC, AAD, CUV etc.
Dans lnk_lot_tracing, les lot_in et lot_out permettent de tracer tous les mouvements et sont donc des STO, TIR, etc
Le but du jeu :
Je dois retrouver chaque STO de lot_stockage dans les lot_in de lnk_lot_tracing (qui peuvent apparaître plus d'une fois) et
- 1. trouver le plus grand begin_time des lot_out correspondant et retourner cette date dans le end_time de lot_stockage pour ce STO dans lot_stockage
- 2 si il y a des TIR dans lot_out, additionner les quantités que je retournerai dans quantité soutirée du STO dans lot_stockage.
Je suppose que je vais devoir utiliser des variables du style :
Egalement un ou plusieurs curseurs, et peut-être d'autres choses ... mais là j'ai besoin d'aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 DECLARE @begin_time_MAX datetime DECLARE @quantity_soutirage decimal(10,2)
Merci d'avance pour vos conseils.
(PS : je retourne à mes lectures rapides, variables, ça devrait aller, je m'attaque aux curseurs. Je sens qu'avant la fin du weekend, j'en connaitrai un rayon sur tout ça )
(PPS: si j'ai pas posté au bon endroit, merci M Le Modo de me téléporter )
Partager