Ciao Ale,
intanto grazie per l'attenzione, ora provo a spiegarmi meglio:
ho una lista di prelievo e un magazzino, nel magazzino ho una serie di prodotti identificati da un codice che stanno in una posizione specifica.
Posso avere piu posizioni con lo stesso prodotto, nella stessa posizione posso avere più copie dello stesso prodotto e anche più copie di prodotti diversi.
ho una lista di prelievo che non è altro che la somma dei prodotti che devo evadere dal magzzino, ma non so ancora da quale posizione.
In entrambe le tabelle ho le sommatorie delle quantità aggregate rispettivamente per codice e posizione per quanto riguarda il magazzino e per codice per quanto concerne la tabella prelievo.
Il mio problema è quello di andare ad individuare quante copie di un prodotto devo andare a togliere dal magazzino e sopratutto da quale posizione, in base alla lista di prelievo.
ho sistemato anche i comandi ddl:
CREATE
TABLE [dbo]
.[MAGAZZINO]
(
[CODICE] [int] NOT NULL,
[QTA] [int] NOT NULL,
[POSIZ] [varchar]
(6
) NOT NULL
)
ON [PRIMARY]
INSERT
INTO MAGAZZINO
VALUES (1000
,5
,'A')
INSERT
INTO MAGAZZINO
VALUES (1000
,4
,'B')
INSERT
INTO MAGAZZINO
VALUES (2000
,3
,'C')INSERT INTO MAGAZZINO
VALUES (3000
,2
,'A')
CREATE
TABLE [dbo]
.[PRELIEVO]
(
[CODICE] [int] NOT NULL,
[QTA] [int]
NOT NULL
)
ON [PRIMARY]
INSERT
INTO PRELIEVO
VALUES (1000
,6
)
INSERT
INTO PRELIEVO
VALUES (2000
,3
)INSERT INTO PRELIEVO
VALUES (3000
,1
)
CREATE
TABLE [dbo]
.[RISULTATO]
(
[CODICE] [int] NOT NULL,
[QTA] [int] NOT NULL,
[POSIZ] [varchar]
(6
) NOT NULL
)
ON [PRIMARY]
INSERT
INTO RISULTATO
VALUES (1000
,5
,'A')
INSERT
INTO RISULTATO
VALUES (1000
,1
,'B')
INSERT
INTO RISULTATO
VALUES (2000
,3
,'C')
INSERT
INTO RISULTATO
VALUES (3000
,1
,'A')
Praticamente devo sottrarre dal magazzino la lista di prelievo, ma in modo sensato, quindi se la mia lista di prelievo mi chiede 10 pezzi di un prodotto , e nel mio magazzino è presente in 3 posizioni con 4 pezzi ogni posizione (quindi 12 in totale) il mio risultato deve essere una cosa simile a questa: prendi 4 pezzi dalla posizione A, prendi 4 pezzi dalla posizione B, e prendi e 2 pezzi dalla posizione C
Ora questo calcolo lo faccio righa per righa con un assembly, mi chiedevo se era possibile avere un approccio diverso.
Nell'assembly non faccio altro che "esplodere" entrambe le tabelle, le ricostruisco in modo tale che ogni record rappresenta un sigolo prodotto, le metto in relazione, e il risultato è proprio la lista di prelievo con associata la posizione.
Rigrazie