SELECT SUM tra due tabelle

di il
6 risposte

SELECT SUM tra due tabelle

Buongiorno,

Ho necessità di ottenere la somma  dei valori dei campi contenuti in due tabelle ( newMovimenti e newMovimentiZERO).

Ho  creato una JOIN 

SELECT SUM(newMovimenti.QuantitaC) AS t FROM newMovimenti LEFT JOIN newMovimentiZERO ON newMovimenti.IdMov = newMovimentiZERO.IdMov 
WHERE  newMovimenti.Azione='IN' And newMovimenti.Codice='123456'
 

Con LEFT JOIN     = solo i risultati della tabella newMovimenti 

Con INNER JOIN  = nessun risultato

con RIGHT JOIN   = nessun risultato

Qualche suggerimento ?

Grazie

6 Risposte

  • Re: SELECT SUM tra due tabelle

    Non ho capito cosa contengono le due tabelle e se hanno campi in comune per quei criteri.

    Left joint significa tutti i record della tabella 1 e i record in comune con la tabella 2

    Inner joint ti dà solo i record in comune tra le due tabelle

    Right joint i record tabella 2 e quelli comuni alla tabella 1 

    Analisi: 

    Left joint ti dà i record della tabella 1 ma non mostra quelli della tabella 2 perché non ci sono corrispondenze in base al criterio

    Inner joint, se non ci sono corrispondenze della tabella 2 e vuoi vedere i corrispondenti della tabella 1 ovvio che hai un insieme vuoto. Perché il criterio è triangoli.

    Terzo caso, dovrebbe mostrare i record della tabella 2 ma hai dato criteri relativi alla tabella 1 perché la tabella 2.non ha triangoli.

    In soldoni

    Tabella 1 triangoli tabella 2 quadrati

    Select bla bla left joint / right joint / inner join bla bla where figura geometrica = triangoli

    Primo caso tutto i triangoli di tabella 1 e i triangoli di tabella 2 risultato solo triangoli (record della tabella 1)

    Secondo caso tutti i triangoli della tabella 2 che sono presenti nella tabella 1 (non ci sono triangoli nella 2 e non mostra nulla e non può mostrare dati della tabella 1 perché la joint vuole i dati lato tabella 2 che ha solo quadrati)

    Terzo caso tutti gli elementi uguali nei due insiemi ma una contiene triangoli e l'altra quadrati... Tu cosa pensi che ti possa mostrare?

  • Re: SELECT SUM tra due tabelle

    Si tratta di un programma per gestire un magazzino.

    Le due tabelle newMovimenti e newMovimentiZERO hanno gli stessi campi.

     il campo quantitaC con Azione=’IN’ della tabella newMovimenti contiene le quantità caricate dell’articolo con relativo codice (articolo) ancora presente in magazzino.

     il campo quantitaC con Azione=’IN’ della tabella newMovimentiZERO contiene le quantità caricate dell’articolo con relativo codice (articolo) non più presente in magazzino (completamento scaricato)

     Volendo calcolare la quantità assoluta caricata nel magazzino dell’articolo devo sommare tutte le quantitaC presenti nelle due tabelle.

     E qui che non riesco a capire perché la JOIN non funziona è mi restituisce solo il valore della tabella newMovimenti.

     Ho provato con:

     LEFT JOIN     = solo i risultati della tabella newMovimenti 

    LEFT OUTER JOIN = solo i risultati della tabella newMovimenti

    INNER JOIN = nessun risultato

    INNER OUTER JOIN = sintax error in operation

    RIGHT JOIN   = nessun risultato

    RIGHT OUTER JOIN   = nessun risultato

     Spero di essere stato chiaro e che soprattutto possa aiutarmi.

    Ancora grazie

  • Re: SELECT SUM tra due tabelle

    25/10/2025 - pierovb ha scritto:

    LEFT JOIN     = solo i risultati della tabella newMovimenti 

    LEFT OUTER JOIN = solo i risultati della tabella newMovimenti

    Tabella 1 {a, b, c, d}

    Tabella 2 {c, z}

    Tabella 1 left joint tabella 2

    Risultato {a, b, c, d}

    Tabella 1 left outlet joint tabella 2

    Risultato {a, b, d}

    Come vedi esclude i comuni ed elenca solo lato tabella 1

    andiamo al magazzino:

    Giornalemagazzino {id, dataregistrazione, datamovimento, articolo, quantità, tipo movimento(carico/scarico), id documento, tipo documento}

    Poi da.sql raggruppi per articolo con carico-scarico e sai quanti ne hai in giacenza.

    Questo gioco delle tre carte che stai facendo non lo capisco... Togli da a e metti su b saranno sempre nella situazione triangoli e quadrati.

    25/10/2025 - pierovb ha scritto:

    ancora presente in magazzino.

    25/10/2025 - pierovb ha scritto:

    non più presente in magazzino (completamento scaricato

    Che significano?

  • Re: SELECT SUM tra due tabelle

    Chiedo scusa 

    ovvio che non funzionava: 

    nella tabella  newMovimentiZERO il campo  IdMov  non ha lo stesso valore del campo IdMov della tabella newMovimenti.

    Perdonatemi sono completamente rinco!!!

  • Re: SELECT SUM tra due tabelle

    Metti le due tabelle con dati fittizi almeno analizzo le.tue sql

  • Re: SELECT SUM tra due tabelle

    25/10/2025 - pierovb ha scritto:

    Le due tabelle newMovimenti e newMovimentiZERO hanno gli stessi campi.

     il campo quantitaC con Azione=’IN’ della tabella newMovimenti contiene le quantità caricate dell’articolo con relativo codice (articolo) ancora presente in magazzino.

     il campo quantitaC con Azione=’IN’ della tabella newMovimentiZERO contiene le quantità caricate dell’articolo con relativo codice (articolo) non più presente in magazzino (completamento scaricato)

    Forse ho capito male, ma se le 2 tabelle sono uguali e vuoi sapere la quantità di articoli in giacenza sommati a quelli già usciti (presumo) allora potresti fare una UNION:

    SELECT MagCompleto.Articolo, Sum(MagCompleto.Giacenza) AS GiacenzaTotale
        FROM
            (SELECT Articolo, Giacenza FROM Mag1 
                UNION 
            SELECT Articolo, Giacenza FROM Mag2)  AS MagCompleto
    GROUP BY MagCompleto.Articolo

    TheTruster

Devi accedere o registrarti per scrivere nel forum
6 risposte