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

    Problemi di group by

    Salve a tutti,

    vorrei tirar fuori da MySQL un output che mi faccia un resconto del genere:

    http://img21.imageshack.us/img21/8620/987s.png

    Nella tabella originale ci sono tutte le telefonate registrate. Per ogni mese vorrei sapere:
    - quante telefonate ci sono
    - quante telefonate hanno il flag sms a 1
    - quante telefonate hanno il flag mail a 1

    La struttura della tabella è:

    http://img694.imageshack.us/img694/3765/asdj.png

    Ci ho provato in diversi modi, ma mi dava sempre problemi il group by.
    Qualcuno mi può aiutare?

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Dovrebbe essere una cosa del genere

    codice:
    select date_format(campo_data,"%M") as mese,
    count(id) as telefonate,
    sum(if(mail=1,1,0)) as flag_mail,
    sum(if(sms=1,1,0)) as flag_sms
    from tabella
    where year(campo_data) = 2009
    group by date_format(campo_data,"%Y%m")

  3. #3
    Grazie per la risposta rapidissima!


    codice:
    select date_format(data_ricezione,"%M") as mese, 
    count(id) as telefonate, sum(if(mail=1,1,0)) as flag_mail, 
    sum(if(sms=1,1,0)) as flag_sms 
    from telefonate 
    where year(data_ricezione) = 2009 
    group by date_format(data_ricezione,"%Y%m")
    Ho controllato ed inserito il nome dei miei campi... c'è qualcosa che non torna a livello di somme. Ma voglio fare un controllo più approfondito.

  4. #4
    Ho controllato ed aggiunto delle condizioni in base alle mie esigenze!
    FUNZIONA!!

    non vorrei abusare della tua disponibilità, c'è un modo per inserire i mesi dove non ci sono corrispondenze e stampare zero in corrispondenza dei contatori?

    http://img109.imageshack.us/img109/304/immaginei.png

    Grazie ancora

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Ti conviene aggiungere al database una semplice tabellina di nome mesi, costituita da un campo contatore id (che andrà da 1 a 12) e da un campo mese in cui inserirai i nomi dei mesi in italiano.

    A questo punto adatti la query che ti ho scritto così

    codice:
    select m.mese,coalesce(telefonate,0) as telefonate,
    coalesce(flag_mail,0) as flag_mail,
    coalesce(flag_sms,0) as flag_sms from
    mesi as m
    left join (
    select date_format(data_ricezione,"%c") as mese, 
    count(id) as telefonate, sum(if(mail=1,1,0)) as flag_mail, 
    sum(if(sms=1,1,0)) as flag_sms 
    from telefonate as t
    where year(data_ricezione) = 2009 
    group by date_format(data_ricezione,"%Y%m")) as tab
    on m.id = tab.mese

  6. #6
    GRANDE

  7. #7
    Ciao nicola,

    ho provato ad inserire questa condizione

    codice:
    SELECT DATE_ADD( DATE_FORMAT( now( ) , '%Y-%m-%d-00-00' ) , INTERVAL 7 DAY 
    ))  AND data_ricezione >= ( SELECT DATE_FORMAT( now( ) , '%Y-%m-%d-00-00' ) - INTERVAL 7 DAY )
    Ma non riesco ad isolare l'errore.
    In pratica voglio isolare tutti i record della settimana corrente.

  8. #8
    Errata corrige:

    ho provato:

    codice:
    SELECT count(id), sum(if(mail=1,1,0)) as mail, sum(if(sms=1,1,0)) as sms FROM
     telefonate WHERE data_ricezione <= ( SELECT DATE_ADD( DATE_FORMAT( now( ) ,
     '%Y-%m-%d-00-00' ) , INTERVAL 7 DAY ) ) AND data_ricezione >= 
    ( SELECT DATE_FORMAT( now( ) , '%Y-%m-%d-00-00' ) - INTERVAL 7 DAY ) 
    AND id_cliente =53 AND telefonata =1 ORDER BY data_ricezione DESC
    secondo te è giusta?
    A me pare che i valori tornano

  9. #9
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Sinceramente senza fare una prova sul campo non ti saprei dire.
    Se vuoi che qualcuno ti dia una conferma posta un mini dump.

  10. #10

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