[RISOLTO] Sum errato

di il
15 risposte

[RISOLTO] Sum errato

Buona sera a tutti,
ho un quesito in merito a una query con subquery.

devo sommare una colonna di numeri dove il codice di riferimento viene trovato tramite una subquery su altra tabella.
funziona tutto solo che la somma è errata. se rieseguo la query la somma viene corretta.

query:

select codice_completo,sum(costo_ingrediente) from tabella_ricette_ingredienti where codice_completo in (select codice_completo from tabella_ricette where cl='1') group by codice_completo
allego due immagini, uno con il risultato della query (query_res), l'altra è la tabella che contiene i valori da sommare (tab_ing).
la query restituisce un valore sum di 2.143 mentre sommando a mano i singoli valori dalla tabella (tab_ing) il risultato è di 1.757.

se rilancio la query quel valore sum viene corretto.
il problema è che ho diversi codici e non capita solo questo nello specifico ma ne ho trovati altri.

può esserci qualche cosa di sbagliato nella query?
Allegati:
24282_c6b4a48f030635a23fd06a341a8ade49.jpeg
24282_c6b4a48f030635a23fd06a341a8ade49.jpeg

24282_67f9c6f5962f1235529bd795412f1b81.jpeg
24282_67f9c6f5962f1235529bd795412f1b81.jpeg

15 Risposte

  • Re: [RISOLTO] Sum errato

    select codice_completo,sum(costo_ingrediente) from tabella_ricette_ingredienti 
    join tabella_ricette
    on tabella_ricette_ingredienti.codice_completo=tabella_ricette.codice_completo
    where cl='1'
    group by codice_completo
    
  • Re: [RISOLTO] Sum errato

    Grazie mille m2!
    ho utilizzato la query con la join ma ho ancora gli stessi risultati errati nel campo sum.
    il prodotto evidenziato riporta ancora il valore errato.

    non capisco il motivo.
    Allegati:
    24282_ea0915d77eac4b480508db908a52e4dc.jpeg
    24282_ea0915d77eac4b480508db908a52e4dc.jpeg
  • Re: [RISOLTO] Sum errato

    Hai delle righe null? Sennò mandami un dump della tabella in privato
  • Re: [RISOLTO] Sum errato

    No nessun null come codice_completo, come costo_ingrediente dei valori 0.
  • Re: [RISOLTO] Sum errato

    La cosa che non capisco è che alla prima esecuzione mi prende sum errato. alla seconda esecuzione il sum è corretto (per quel codice_completo e altri, ma ne trovo comunque qualcuno errato).
  • Re: [RISOLTO] Sum errato

    Select codice_completo,sum(costo_ingrediente) from tabella_ricette_ingredienti
    join tabella_ricette
    on tabella_ricette_ingredienti.codice_completo=tabella_ricette.codice_completo
    group by codice_completo
    HAVING cl='1'

    Se non ricordo male quando usi una funzione di aggregazione si consiglia la clausula "HAVING" al posto del WHERE, magari non cambia niente...
    W.
  • Re: [RISOLTO] Sum errato

    Wolfen ha scritto:


    Select codice_completo,sum(costo_ingrediente) from tabella_ricette_ingredienti
    join tabella_ricette
    on tabella_ricette_ingredienti.codice_completo=tabella_ricette.codice_completo
    group by codice_completo
    HAVING cl='1'

    Se non ricordo male quando usi una funzione di aggregazione si consiglia la clausula "HAVING" al posto del WHERE, magari non cambia niente...
    W.
    grazie wolfen, mi restituisce errore
    ""Unknown column 'cl' in 'having clause'"
    ho provato a modificare la query inserendo il nome delle tabelle prima dei campi
    Select tabella_ricette_ingredienti.codice_completo,sum(costo_ingrediente) from tabella_ricette_ingredienti
    join tabella_ricette
    on tabella_ricette_ingredienti.codice_completo=tabella_ricette.codice_completo
    group by tabella_ricette_ingredienti.codice_completo
    HAVING tabella_ricette.cl='1'
    ma restituisce sempre quell'errore.

    having non si utilizza con un count?
  • Re: [RISOLTO] Sum errato

    Già, non ci avevo fatto caso, scusa, having vuole la colonna nella selezione:
    
    Select tabella_ricette.cl, tabella_ricette_ingredienti.codice_completo,sum(costo_ingrediente) from tabella_ricette_ingredienti
    join tabella_ricette
    on tabella_ricette_ingredienti.codice_completo=tabella_ricette.codice_completo
    group by tabella_ricette_ingredienti.codice_completo
    HAVING tabella_ricette.cl='1'
    
    Having si usa nelle funzioni di aggregazione come sum, avg, count, ect ect, dove non puoi usare il where, usarlo nel modo in cui ti ho suggerito è solo una forzatura per bypassare il where e vedere il comportamento della query.
    W.
  • Re: [RISOLTO] Sum errato

    Wolfen ha scritto:


    Già, non ci avevo fatto caso, scusa, having vuole la colonna nella selezione:
    
    Select tabella_ricette.cl, tabella_ricette_ingredienti.codice_completo,sum(costo_ingrediente) from tabella_ricette_ingredienti
    join tabella_ricette
    on tabella_ricette_ingredienti.codice_completo=tabella_ricette.codice_completo
    group by tabella_ricette_ingredienti.codice_completo
    HAVING tabella_ricette.cl='1'
    
    Having si usa nelle funzioni di aggregazione come sum, avg, count, ect ect, dove non puoi usare il where, usarlo nel modo in cui ti ho suggerito è solo una forzatura per bypassare il where e vedere il comportamento della query.
    W.
    grazie per l tua spiegazione!
    sembrerebbe fare i conti corretti ora.
    faccio una verifica a campione con quei codici che erano errati prima giusto per una conferma.

    cosa può essere andato male nelle query precedenti?
    è un problema di aggregazione con il where quindi?
  • Re: [RISOLTO] Sum errato

    Rieccomi nuovamente.
    eseguita la query sembrava funzionare ora mi ritrovo nella stessa situazione di prima.
    vista funzionante nel client mysql l'ho riportata nella pagina php che mi serviva. lancio il tutto e sum nuovamente errati.
    rilancio la query nel client mysql e mi ritrovo di nuovo con i sum errati.
    non ci sto capendo più.....
    Allegati:
    24282_3b136916a770c5c20ac1076b59f5a8b7.jpg
    24282_3b136916a770c5c20ac1076b59f5a8b7.jpg

    24282_dbbde009200440f1e227de28f743a14a.jpg
    24282_dbbde009200440f1e227de28f743a14a.jpg
  • Re: [RISOLTO] Sum errato

    Rieseguendo nuovamente la query il risultato per tutti gli elementi risulta corretto.
    Allegati:
    24282_f9d50569c57c4ec630046c0aa1be82ba.jpg
    24282_f9d50569c57c4ec630046c0aa1be82ba.jpg
  • Re: [RISOLTO] Sum errato

    A me non risulta nessun errore, in nessun caso. suggerisco di controllare l'integrità della tabella (in realtà dei suoi indici, qualora ci siano).

    Due note rapide: 1) l'utilizzo di JOIN "filtra" i campi NULL (cioè non li considera), il che è voluto
    2) la where può benissimo essere messa nel join (anzi, in generale si mette proprio lì dove l'ho messa io), per tanti motivi che lascio stare
  • Re: [RISOLTO] Sum errato

    select tabella_ricette.codice_completo,sum(costo_ingrediente), count(*) as quanti from tabella_ricette_ingredienti
    join tabella_ricette
    on tabella_ricette_ingredienti.codice_completo=tabella_ricette.codice_completo
    where cl='1'
    group by tabella_ricette.codice_completo
    
  • Re: [RISOLTO] Sum errato

    select tabella_ricette.codice_completo,tabella_ricette_ingredienti.costo_ingrediente from tabella_ricette_ingredienti
    join tabella_ricette
    on tabella_ricette_ingredienti.codice_completo=tabella_ricette.codice_completo
    where cl='1'
    order by 1
    
Devi accedere o registrarti per scrivere nel forum
15 risposte