Mi serve una query non semplice, ma non riesco a realizzarla xfettamente.
Praticamente ho 3 tabelle, la prima ke contiene una serie di articoli e le loro informazioni principali, la seconda con i prezzi di questi articoli e i fornitori (praticamente un articolo può avere diversi prezzi xkè comprato da + fornitori) e la terza con dei movimenti che vengono eseguiti sugli articoli (quantità di materiale caricato e scaricato)
Ora dovrei realizzare una query che mi restituisca tutti gli articoli sottoscorta (cioè ke hanno il campo scortaminima della tabella articoli maggiore della quantità ke si ricava sottraendo la quantità di articoli scaricati da quelli caricati), con i campi scortaminima (preso pari pari dal database), scorta attuale (ricavato dai movimenti), ordine (ricavato da scortaminima-attuale+1) e fornitore e prezzo ke vengono scelti prendendo il fornitore ke fornisce il prezzo migliore.
C sn quasi riuscito a farla ma ho un problema cn questi ultimi 2 campi. Praticamente non riesco a fargli prendere il fornitore e prezzo con prezzo minore relativo al singolo articolo.
Ho provato a farlo in questo modo ma se per esempio un articolo ha + fornitori mi restituisce 2 record cn lo stesso articolo e i 2 fornitori e prezzi distinti
Ho provato a cambiare l' ultima condizione del having in questo modocodice:SELECT T_MAGAZZINO_ARTICOLI.CodiceArticolo, T_MAGAZZINO_ARTICOLI.descrizione, T_MAGAZZINO_ARTICOLI.scorta_min AS [Scorta minima], SUM(T_MAGAZZINO_MOVIMENTI.qta * T_MAGAZZINO_MOVIMENTI.tipomov) AS Attuale, T_MAGAZZINO_ARTICOLI.scorta_min + 1 - SUM(T_MAGAZZINO_MOVIMENTI.qta * T_MAGAZZINO_MOVIMENTI.tipomov) AS Ordine, T_MAGAZZINO_PREZZI.CodFornitore AS Fornitore, T_MAGAZZINO_PREZZI.Prezzo FROM T_MAGAZZINO_ARTICOLI LEFT OUTER JOIN T_MAGAZZINO_MOVIMENTI INNER JOIN T_MAGAZZINO_PREZZI ON T_MAGAZZINO_MOVIMENTI.codart = T_MAGAZZINO_PREZZI.CodArticolo ON T_MAGAZZINO_ARTICOLI.CodiceArticolo = T_MAGAZZINO_PREZZI.CodArticolo AND T_MAGAZZINO_ARTICOLI.CodiceArticolo = T_MAGAZZINO_MOVIMENTI.codart GROUP BY T_MAGAZZINO_ARTICOLI.CodiceArticolo, T_MAGAZZINO_ARTICOLI.descrizione, T_MAGAZZINO_ARTICOLI.scorta_min, T_MAGAZZINO_PREZZI.CodFornitore, T_MAGAZZINO_PREZZI.Prezzo HAVING (SUM(T_MAGAZZINO_MOVIMENTI.qta * T_MAGAZZINO_MOVIMENTI.tipomov) < T_MAGAZZINO_ARTICOLI.scorta_min) AND (T_MAGAZZINO_PREZZI.Prezzo = MIN(T_MAGAZZINO_PREZZI.Prezzo))
Ma in questo caso mi restuisce al max 1 record in totale che è l articolo con il prezzo minore di tutticodice:... And (T_MAGAZZINO_PREZZI.Prezzo = (Select MIN(T_MAGAZZINO_PREZZI.Prezzo) FROM T_MAGAZZINO_PREZZI))
Ho provato nella select principale a mettere Select...., Min(Prezzo) ma m risulta uguale alla prima ke ho scritto
Qualcuno può aiutarmi pls?


Rispondi quotando