Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    154

    operazione con 2 tabelle

    non riesco a caricare immaggini su questa sezione del forum , vi metto il link delle immagini

    Ho 2 tabelle :

    https://i.imgur.com/XVmDkiy.png


    il risultato che vorrei ottenere attraverso un select è questo:

    https://i.imgur.com/GqP7c0P.png


    spiegazione:

    come mostrato nella prima immagine
    sommo tutti i guadagni (in base a mese e anno) della tabella guadagni e gli sottraggo tutte le spese (sempre relative allo stesso mese e anno) della tabella spese
    il risultato, ovvero la tabella che voglio generare (seconda immagine) sarà: in una colonna avrò le rimanenze , in un altra colonna la corrispettiva data (mese/anno)


    select from guadagni SUM(guadagno_inventario + guadagno_bombole)
    ok ma poi come faccio sto select in base al mese 01/21 e 02/21 ... come gli sottraggo le spese sommate della tabella spese? come faccio a farmi restituire quelle colonne

    secondo voi è una cosa fattibile con un unica query ? come posso fare un operazione simile ?

    ps: le date io le mostro in output ordinate secondo D/M/Y ..nel db invece sono ordinate secondo Y-M-D ... nella tabella finale voglio ottenere solo M/Y non mi interessa i giorni D

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    154
    codice:
    select SUM(cifra_spesa), SUM(guadagno_inventario + guadagno_bombole) FROM guadagni, spese GROUP BY MONTH(data_pag) = MONTH(data_chiusura)  AND YEAR(data_pag) = YEAR(data_chiusura)
    
    
    
    
    select sum(sum(guadagno_inventario + guadagno_bombole) - sum(cifra_spesa)) FROM guadagni, spese GROUP BY MONTH(data_pag) = MONTH(data_chiusura)  AND YEAR(data_pag) = YEAR(data_chiusura)


    maledetta logica ... dove sbaglio?

  3. #3
    Quote Originariamente inviata da Punix Visualizza il messaggio
    [CODE]
    ...
    maledetta logica ... dove sbaglio?
    ciao,

    si vede che stai improvvisando; ti consiglio di studiare un pò di sql

    https://www.w3schools.com/sql/
    O santo protettore del'informatico quadratico medio , se puoi allontana da me questo cetriolo amaro!
    Programmazione agile ? Guarda che qua già da un pezzo facciamo programmazione acrobatica !

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    154
    infatti sto improvvisando, non riesco a produrre il risultato voluto, per questo avevo chiesto aiuto

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    154
    codice:
    SELECT SUM((guadagno_inventario + guadagno_bombole) - cifra_spesa) as rimanenza, DATE_FORMAT(data_pag, '%Y-%m') as data_pag, DATE_FORMAT(data_chiusura, '%Y-%m') as data_chiusura 
    
    FROM spese,guadagni 
    
    WHERE DATE_FORMAT(data_chiusura, '%Y-%m') = DATE_FORMAT(data_pag, '%Y-%m') 
    
    GROUP BY DATE_FORMAT(data_pag, '%Y-%m')
    risultato:
    Immagine.png

    che poi (25,50 + 10,00) - 50 = 56,00 sbaglia pure il calcolo

    però se faccio:

    codice:
    SELECT cifra_spesa, guadagno_inventario, guadagno_bombole, data_pag, data_chiusura 
    FROM spese,guadagni 
    WHERE DATE_FORMAT(data_chiusura, '%Y-%m') = DATE_FORMAT(data_pag, '%Y-%m') 
    GROUP BY DATE_FORMAT(data_pag, '%Y-%m')
    il risultato è:
    3.png

    perdo per strada dei pezzi:

    2.png

    il terzo record della prima tabella e il secondo record della seconda tabella perchè non me li raggruppa e li considera nel calcolo?
    Ultima modifica di Punix; 10-01-2021 a 16:32

  6. #6
    Ciao,

    personalmente comincerei con il trattere a parte guadagni e spese anche perchè ( grattati !)
    specialmente di questi tempi un mese potresti avere solo spese senza nessun guadagno
    e poi li metterei insieme con una UNION

    Una cosa del genere ( ovviamente non provata)

    codice:
    SELECT  sum(guadagno_inventario + guadagno_bombole) as Importo, DATE_FORMAT(data_chiusura, '%Y-%m') as MeseAnno
    GROUP BY DATE_FORMAT(data_chiusura, '%Y-%m')
    
    UNION ALL
    
    SELECT -sum(cifra_spesa) , DATE_FORMAT(data_pag, '%Y-%m')  
    FROM spese group by  DATE_FORMAT(data_pag, '%Y-%m')

    ed a questo punto basta che fai la somma di importo raggruppata per mese anno

    codice:
    select sum(importo), meseAnno
    from
    (
      SELECT  sum(guadagno_inventario + guadagno_bombole) as Importo, DATE_FORMAT(data_chiusura,    '%Y-%m') as MeseAnno
      GROUP BY DATE_FORMAT(data_chiusura, '%Y-%m')
    
      UNION ALL
    
      SELECT -sum(cifra_spesa) , DATE_FORMAT(data_pag, '%Y-%m')  
      FROM spese group by  DATE_FORMAT(data_pag, '%Y-%m')
    ) q
    GROUP BY MeseAnno
    Ultima modifica di sspintux; 10-01-2021 a 17:01
    O santo protettore del'informatico quadratico medio , se puoi allontana da me questo cetriolo amaro!
    Programmazione agile ? Guarda che qua già da un pezzo facciamo programmazione acrobatica !

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    154
    SELECT -sum(cifra_spesa' at line 5 errore... cosa è quel ') q' nella penultima riga del codice

    non mi accetta quel - davanti al sum penso

  8. #8
    non ho mai sql per provare (ed anche lo avessi non mi metteri a ricreare la tua situazione );

    se ti va potresti replicare il tutto su http://sqlfiddle.com.

    Comunque prova così ( mi sa che mi ero perso un 'from guadagni'
    q è un alias dato alla query in union .... come fosse una vista di nome q
    codice:
    select sum(q.importo), q.meseAnno
    FROM
    (
      SELECT  sum(guadagno_inventario + guadagno_bombole) as Importo, DATE_FORMAT(data_chiusura,    '%Y-%m') as MeseAnno
      FROM guadagni
      GROUP BY DATE_FORMAT(data_chiusura, '%Y-%m')
    
    
      UNION ALL
    
    
      SELECT -1 * sum(cifra_spesa) , DATE_FORMAT(data_pag, '%Y-%m')  
      FROM spese GROUP BY  DATE_FORMAT(data_pag, '%Y-%m')
    ) as q
    GROUP BY Q.MeseAnno
    Ultima modifica di sspintux; 10-01-2021 a 17:21
    O santo protettore del'informatico quadratico medio , se puoi allontana da me questo cetriolo amaro!
    Programmazione agile ? Guarda che qua già da un pezzo facciamo programmazione acrobatica !

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    154


    grande sspintux , proprio quello che volevo

    ps: forse una svista c'è una Q maiuscola sull ultimo group by, e from guaGagni che ho sistemato in guadagni ...ed ho ottenuto quello che volevo...ti ringrazio

  10. #10
    Felice di essere stato di aiuto,
    ... ma ti mando la fattura così metto almeno un record in guadagni pure io
    O santo protettore del'informatico quadratico medio , se puoi allontana da me questo cetriolo amaro!
    Programmazione agile ? Guarda che qua già da un pezzo facciamo programmazione acrobatica !

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.