Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    MYSQL problema con SUM e COUNT e UNION

    Ciao a tutti,

    ho un problema con la seguente query con UNION.

    Singolarmente funzionano bene, ma se le unisco il risultato non è quello sperato.

    Entrambe le query rendono due colonne, la prima una stringa "settore" e nella seconda il conto delle occorrenze "num".

    Il problema è che dopo averle unite non mi fa la somma delle colonne num ma mi prende solo il valore della prima parte


    Codice PHP:
    SELECT settoresum(num) AS tot from (
            (
    SELECT settt.descrizione_settore as settoreCOUNT(*) AS num 
            FROM con_annuario_sl_settori 
    AS settt INNER JOIN con_annuario_web_base_anagrafica AS anag ON settt.cod_settore anag.id_settore 
            WHERE anag
    .nellannuario "si"  GROUP BY settore)
        
    UNION 
            
    (SELECT settt.descrizione_settore AS settoreCOUNT(*) AS num
            FROM con_annuario_sl_settori 
    AS settt INNER JOIN con_annuario_web_dati_accessori AS acces ON acces.valore settt.cod_settore
            WHERE 
    (acces.tipo_dato=OR acces.tipo_dato=7) AND acces.approvato="y" GROUP BY settore)
                    
    ) as 
    unione GROUP BY set tore 

    Grazie a chiunque saprà aiutarmi!

    Ciao

  2. #2

    soluzione con PHP

    ciao a tutti, per adesso faccio così e poi sommo con PHP che se lo faccio direttamente da query non mi somma il campo null

    Codice PHP:
    SELECT a.settore as set1a.numb.num2

    FROM 
            
    (SELECT settt.descrizione_settore as settoreCOUNT(*) AS num 
            FROM con_annuario_sl_settori 
    AS settt INNER JOIN con_annuario_web_base_anagrafica AS anag ON settt.cod_settore anag.id_settore 
            WHERE anag
    .nellannuario "si"  GROUP BY settore) as 
            
            left JOIN
            
            
    (SELECT settt.descrizione_settore AS settoreCOUNT(*) AS num2
            FROM con_annuario_sl_settori 
    AS settt INNER JOIN con_annuario_web_dati_accessori AS acces ON acces.valore settt.cod_settore
            WHERE 
    (acces.tipo_dato=OR acces.tipo_dato=7) AND acces.approvato="y" GROUP BY settore) as b
            
            on a
    .settore b.settore 

    Se vi viene in mente come fare per sommare direttamente in query ogni suggerimento è ben accetto.
    Grazie!

  3. #3
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Non ho capito tutto il problema ma provo a rispondere per improvvisazione
    su 2 dettagli che mi hanno "colpito"


    Tu hai 2 SELECT che restituiscono ogniuna:
    ___ Settore
    ___ num
    Vuoi poi
    ______ raggruppare per Settore
    ______ Sommare i num


    __________________________________________________ _______________

    Nel primo tentativo con union lamenti che:
    Originariamente inviato da cornac
    Il problema è che dopo averle unite
    non mi fa la somma delle colonne num
    ma mi prende solo il valore della prima parte
    Prova a mettere "UNION ALL" al posto di "UNION"


    __________________________________________________ _______________


    dopo lamenti che:
    Originariamente inviato da cornac
    per adesso faccio così e poi sommo con PHP
    che se lo faccio direttamente da query
    non mi somma il campo null
    Nelle viste di tutti i DB ( almeno i pochi quelli che conosco io )
    __qualunque operazione matematica dove ci sia un valore Null
    __restituisce sempre e solo Null

    Quindi devi trasformare i Null in 0

    Potrebbe essere
    ___ case when Campo IsNull then 0 else Campo end
    oppure
    ___ coalesce(Campo,0)


    __________________________________________________ ____________

    Ti ripeto ho risposto senza capire veramente il problema
    ___ 90% ho sbagliato




  4. #4

    [RISOLTO!]

    ed invece grazie,

    bastava mettere UNION ALL al posto di UNION

    ... ed anche la seconda soluzione si adattava perfettamente ma ho optato per la prima.

    GRAZIE MILLE!!!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.