Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    281

    [SQL] Problemi con una query

    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?

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    281
    Sono riuscito a trovare un compromesso ma ho dovuto eliminare il campo CodFornitore ke xò m serve

    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, 
                          MIN(T_MAGAZZINO_PREZZI.Prezzo) AS 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
    WHERE     (T_MAGAZZINO_ARTICOLI.consum_invent = 'C')
    GROUP BY T_MAGAZZINO_ARTICOLI.CodiceArticolo, T_MAGAZZINO_ARTICOLI.descrizione, T_MAGAZZINO_ARTICOLI.scorta_min
    HAVING      (SUM(T_MAGAZZINO_MOVIMENTI.qta * T_MAGAZZINO_MOVIMENTI.tipomov) < T_MAGAZZINO_ARTICOLI.scorta_min)

    Come posso fare se voglio aggiungere anke il CodFornitore ke sta nella stessa tabella del prezzo?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.