Query

di il
3 risposte

Query

Buongiorno,
ho la seguente necessità ma non riesco a capire come fare.
4 tabelle:
- Ordini 1 a molti Prodotti
- DDT 1 a molti con Prodotti_DDT
- Prodotti 1 a molti con Prodotti_DDT

Query 1 --> per vedere tutti i DDT (con relativo numero pezzi) associati all'ordine i-esimo (con totale pezzi)
Query 2 --> per vedere tutti gli ordini che non hanno un DDT (ossia per quell'ordine non è ancora stato spedito nessun DDT) --> ho usato query ricerca dati non corrispondenti
Query 3--> è la union tra la una 1 e la 2 per vedere in contemporanea tutti gli ordini associati ad un DDT (e nel caso visualizzare ciascun DDT) e ordini non associati ad un DDT
Query 4 --> ho creato una query a campi incrociati sulla query 3. Ciò ha lo scopo di poter capire quanti pezzi mi manca spedire (tramite i DDT) per chiudere l'ordine

query 5 --> qui ho il problema. Per ciascun ordine (con DDT e senza DDT) creo la differenza = PezziOrdine - sommatoria PezziDDT e tutto funge per il meglio. Nel momento però che un ordine non ha ddt risulta differenz = PezziOrdine - 0 = NON OTTENGO GIUSTAMENTE RISULTATI.
Non so come prima sono riuscito nel caso Sommatoria PEzziDDT = 0 allora differenza = - PezziOrdine

ES. 5 - 0 = -5

Mi sapete ridire la funzione?

Questa è la query 5

SELECT DDT2_Ordini_Prodotti_DDT_CampiIncrociati.ID_Ordine, Sum(DDT2_Ordini_Prodotti_DDT_CampiIncrociati.Qta) AS SommaDiQta, Sum(DDT2_Ordini_Prodotti_DDT_CampiIncrociati.[Totale di qta DDT]) AS [SommaDiTotale di qta DDT], Var([DDT2_Ordini_Prodotti_DDT_CampiIncrociati]![Qta]-[DDT2_Ordini_Prodotti_DDT_CampiIncrociati]![Totale di qta DDT]) AS Espr1
FROM DDT2_Ordini_Prodotti_DDT_CampiIncrociati
GROUP BY DDT2_Ordini_Prodotti_DDT_CampiIncrociati.ID_Ordine;

Grazie

3 Risposte

  • Re: Query

    luca3.34 ha scritto:


    query 5 --> qui ho il problema. Per ciascun ordine (con DDT e senza DDT) creo la differenza = PezziOrdine - sommatoria PezziDDT e tutto funge per il meglio.

    a) - Nel momento però che un ordine non ha ddt risulta differenz = PezziOrdine - 0 = NON OTTENGO GIUSTAMENTE RISULTATI.
    b) - Non so come prima sono riuscito nel caso Sommatoria PEzziDDT = 0 allora differenza = - PezziOrdine

    ES. 5 - 0 = -5
    Credo tu abbia 2 distinti problemi.
    Per il punto a), quando affermi che non ottieni giustamente risultati, affermi che il risultato è 5 (supponendo che questa sia la quantità dell' ordine) oppure ottieni null ?
    Per il punto b) .... se moltiplichi un numero per -1 cosa ottieni ?
  • Re: Query

    A) Mi sono espresso male, intendevo che sommatoria .... non avendo valori fa si che differenza è senza valore.
    b) Ringrazio per il suggerimento ma conosco un pò di matematica

    Comunque ho risolto tutto creando una colonna ad hoc per superare il limite di quando l'ordine non ha ddt associati ed infine ho creato una query che si appoggia ad una tabella per risolvere il problema delle maschere
  • Re: Query

    Bene che hai risolto, anche se credo in maniera più complicata di come avrei fatto io.

    Resta il fatto che, se come credo sia, il punto a) restituisce null io avrei fatto una cosa del genere :
    
    QtaResidua = iif (isnull(Qta_DDT); QtaOrdine * -1; QtaOrdine-QtaDDT)
    
    Sempre che io abbia capito cosa volevi fare .....
Devi accedere o registrarti per scrivere nel forum
3 risposte