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
codice:
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))
Ho provato a cambiare l' ultima condizione del having in questo modo
codice:
...
And (T_MAGAZZINO_PREZZI.Prezzo =
(Select MIN(T_MAGAZZINO_PREZZI.Prezzo) FROM T_MAGAZZINO_PREZZI))
Ma in questo caso mi restuisce al max 1 record in totale che è l articolo con il prezzo minore di tutti
Ho provato nella select principale a mettere Select...., Min(Prezzo) ma m risulta uguale alla prima ke ho scritto
Qualcuno può aiutarmi pls?