Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    170

    [Php-Mysql] Query complicata

    Ho una tabella dove inserisco le operazioni dei soci: versamenti e rimborsi.
    Devo fare una query che mi calcoli per ogni socio se la somma dei versamenti effettuati dal socio è maggiore della somma dei suoi rimborsi, e quindi mi visualizzi la differenza.
    Qual'è il modo migliore per risolvere il problema?

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Non so come sia strutturata la tua tabella ma giusto per darti un'idea

    select socio,sum(versamenti-rimborsi) as diff
    from tabella group by socio
    having diff > 0;

    questa query visualizza soltanto i soci che hanno versato più di ciò che è stato loro rimborsato.
    Se vuoi visualizzare tutti i soci che hanno avuto più rimborsi di ciò che hanno versato (ammesso che esista la possibilità) togli l'having dalla query.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    170
    Si, io però ho un campo importo_tot dove viene inserito l'importo dell'operazione, ed un campo tipo_op dove viene inserita una lettera a seconda dell'operazione(V per versamento e R per rimborso).
    Praticamente, ad es.:
    id_socio - importo_tot - tipo_op
    01 - 55.00 - V
    03 - 45.00 - V
    07 - 25.00 - V
    01 - 15.00 - R
    Come faccio quindi ad implementare la query che mi hai scritto: "sum(versamenti-rimborsi)" ?!?!?
    Grazie.

  4. #4
    codice:
    SELECT id_socio, sum(
    if (tipo_op = 'V' , importo_tot, - importo_tot) ) as totale
    FROM tabella
    where id_socio ....... 
    group by id_socio

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Originariamente inviato da piero.mac
    codice:
    SELECT id_socio, sum(
    if (tipo_op = 'V' , importo_tot, - importo_tot) ) as totale
    FROM tabella
    where id_socio ....... 
    group by id_socio
    Non ci avevo proprio pensato all'if.
    per quelle ripetizioni di sql piero.mac, sempre disponibile?

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.