QUERY UNIONE DUE QUERY CON RISULTATO DIFFERENZA DI QUANTITA

di il
3 risposte

QUERY UNIONE DUE QUERY CON RISULTATO DIFFERENZA DI QUANTITA

Ciao a tutti , sono nuovo del forum e avrei questo problema, 

devo unire due QUERYdove su una ho gli acquisti e su l'altra le vendite, devo creare una query che mi dia la differenza tra vendite e acquisti in base all'ID del prodotto e ID del terzista , vi faccio un esempio pratico

la prima query è KgAcquistati e il suo risultato è

IDProdotto

TotKgAcquistati

NomeProdotto

NomeTerzista

IDTerzista

IDCategoria

NomeCategoria

TotKgVenduti (inserito per avere dati uguali in entrambi le query)

la seconda query è KgVenduti e il suo risultato è:

IDProdotto

TotKgVenduti

NomeProdotto

NomeTerzista

IDTerzista

IDCategoria

NomeCategoria

TotKgAcquistati(inserito per avere dati uguali in entrambi le query)

io dovrei unire le due query dove il suo risultato è    Differenza(kgvenduti-kgacquistati) in base al terzista scelto, la cosa che non riesco a fare è che quando un terzista non ha prodotti venduti non mi da zero e molte volte mi somma i kg acquistati anche nel terzista che non ha nulla. per ora la mia unione è questa:

SELECT QueryKgAcquistati.IDProdotto, QueryKgAcquistati.TotKgAcquistati, QueryKgAcquistati.NomeProdotto, QueryKgAcquistati.NomeTerzista, QueryKgVenduti.TotKgVenduti, QueryKgVenduti.NomeProdotto, QueryKgVenduti.NomeTerzista, IIf(IsNull([QueryKgAcquistati]![TotKgAcquistati]),0,[QueryKgAcquistati]![TotKgAcquistati])-IIf(IsNull([QueryKgVenduti]![TotKgVenduti]),0,[QueryKgVenduti]![TotKgVenduti]) AS Differenza, QueryKgAcquistati.IDCategoriaProd, QueryKgAcquistati.IDTerzista, QueryKgVenduti.IDTerzista, *
FROM QueryKgAcquistati LEFT JOIN QueryKgVenduti ON QueryKgAcquistati.IDProdotto = QueryKgVenduti.IDProdotto;

vi ringranzio per chi riesce ad aiutarmi

grazie e buona giornata a tutti.

Francesco

3 Risposte

  • Re: QUERY UNIONE DUE QUERY CON RISULTATO DIFFERENZA DI QUANTITA

    Query di unione:

    Select * from tabella1

    Union

    Select * from tabella2

    Dove sta la clausola “union” nella tua query?

    Hai solo creato una left join che presuppone l'esistenza di campi in comune.

    Esempio dati

    Tabella1

    Id.   Descrizione.    Kg.  Ecc…

    1.     Farina.             100

    2.     Zucchero.        25

    Tabella2

    1.    Farina.            50

    Risultato union

    1.    Farina.            100

    2.    Zucchero.       25

    1.   Farina.              50

    Il risultato ha uno sviluppo verticale.

    Risultato left join

    Idt1.    Descrt1.       Kgt1.      Idt2.   Descrt2.    Kgt2

    1          farina.              100.   1.         Farina.    50

    2.         Zucchero.        25.     Null.     Null.    Null. 

    Left join ti da tutti i dati della tabella1 anche se non ci sono corrispondenze nella tabella2 inoltre il risultato ha uno sviluppo orizzontale.

    Giusto per complicarti la vita hai creato due tabelle gemelle quando ne basta una aggiungendo un campo tipomovimento da valorizzare come carico o scarico

    18/07/2024 - francesco34 ha scritto:


    la cosa che non riesco a fare è che quando un terzista non ha prodotti venduti non mi da zero e molte volte mi somma i kg acquistati anche nel terzista che non ha nulla

    Se non ha prodotti vendutia solo acquistati è giusto

    Carico 100 scarico 50 differenza = 100-50=50

    Carico 25 scarico 0 differenza = 25-0=25

    Il terzista che non ha nulla cosa intendi? Se lo hai menzionato nella query:

    Carico 0 scarico 0 risultato 0

    Lo avrai nell'elenco a meno che non metti nella where differenza >0

    A proposito dove sta la where?

  • Re: QUERY UNIONE DUE QUERY CON RISULTATO DIFFERENZA DI QUANTITA

    Comunque dovresti fare somma carichi - somma scarichi

    Con due tabelle ti complichi la vita.

  • Re: QUERY UNIONE DUE QUERY CON RISULTATO DIFFERENZA DI QUANTITA

    18/07/2024 - francesco34 ha scritto:


    FROM QueryKgAcquistati LEFT JOIN QueryKgVenduti ON QueryKgAcquistati.IDProdotto = QueryKgVenduti.IDProdotto;

    And idtetzistatb1=idtetzistatb2

    I nodi vengono al pettine.

    Mostra le tabelle con i dati fittizi in modo da rendere più comprensibile il problema.

Devi accedere o registrarti per scrivere nel forum
3 risposte