Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1

    Mysql - query di update

    Salve a tutti,
    vorrei una mano per fare una query di update in mysql. In pratica ho 2 tabelle: somma, adempimenti, con i campi di mio interesse che sono: in adempimenti; agente, prezzo, data inizio e data fine.
    Detto questo dovre fare una query di aggiornamento che mi dovrebbe mettere i dati nella tabella somma facendo la somma del campo prezzo per ogni mese considerando la data di inizio e raggruppato per ogni agente.
    Ho provato facendo un if per ogni mese, ma come update non mi funziona. Qualche idea?

  2. #2
    cosa intendi con: " la somma del campo prezzo per ogni mese considerando la data di inizio " ?

  3. #3
    La somma del campo prezzo di tutti i record divisi per mese e per agente.
    Ad esempio la somma del campo prezzo di solo l'agente 1 per il mese di gennaio quindi come data di inizio dal 01/01/2010 al 31/01/2010 ma solo dell'agente 1. Poi del mese di febbraio e cosi via per tutti gli agenti.

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Per recuperare i dati che ti occorrono mi sembra che basti questa

    codice:
    select 
    agente,
    extract(year_month from data_inizio) as mese,
    sum(prezzo) as tot_mese
    from adempimenti
    group by agente,mese

  5. #5
    Grazie mille, funziona.
    Solo che ho una complicazione, il campo di data_inizio dovrei prenderlo da un altra tabella in cui ho idadempimento che la collega alla tabella adempimenti.
    includendo semplicemente la tabella in from non funziona e mi da molti record con lo stesso valore per ogni mese.

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Posta un esempio pratico della tua situazione.

  7. #7
    ----adempimenti----
    idadempimento---agente---prezzo---
    1------------------1--------100---
    3------------------3--------400---


    ------attivita----
    idadempimento----data_inizio---
    --1----------------01/01/2010
    --3----------------01/01/2010


    In pratica devo prendere la somma del prezzo raggruppato per ogni agente che prendo dalla tabella adempimenti e a sua volta raggrupato per mese con la data che dovrei prendere dalla tabella attivita. Il tutto metterlo in una tabella che ha come campi i mesi dell'anno.
    Dovrei poter prendere solamente i record che sono del 2010.

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Mi pare di capire che voglia una tabella pivot in questo modo:

    codice:
    select agente,
    sum(if(month(data_inizio)=1,prezzo,0)) as gennaio,
    sum(if(month(data_inizio)=2,prezzo,0)) as febbraio,
    .........
    sum(if(month(data_inizio)=12,prezzo,0)) as dicembre
    from adempimenti as ade
    left join attivita as att
    on ade.idadempimento = att.idadempimento
    where data_inizio between '2010-01-01' and '2010-12-31' 
    group by agente
    Ti serve proprio fare pure l'update di questi dati?
    Non basterebbe "salvare" la query di sopra come una vista consultabile ogni volta che ti occorra?

  9. #9
    Grazie per l'aiuto.
    Volendo posso evitare di fare l'update salvandola come vista, ma dovrei aggiungere una colonna con la somma dell'intero anno per ogni rispettivo agente e anche aggiungere un ulteriore record con la somma totale indipendetemente dall'agente per ogni mese, per questo avevo pensato di fare l'update.

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    codice:
    select coalesce(agente,'Totale') as agente,
    sum(if(month(data_inizio)=1,prezzo,0)) as gennaio,
    sum(if(month(data_inizio)=2,prezzo,0)) as febbraio,
    ....
    sum(if(month(data_inizio)=12,prezzo,0)) as dicembre,
    sum(prezzo) as totale
    from adempimenti as ade
    left join attivita as att
    on ade.idadempimento = att.idadempimento
    where data_inizio between '2010-01-01' and '2010-12-31' 
    group by agente
    with rollup

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.