Visualizzazione dei risultati da 1 a 8 su 8

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    105

    Query Groub by su piu valori

    Salve a tutti, non sono bravo con i titoli, comunque, ho questa tabella chiamata USCITE

    categoria importo Data
    mele 30 2017-01-01
    pere 20 2017-01-01
    mele 10 2016-21-12
    pere 35 2016-20-10
    mele 10 2016-19-10
    pere 10 2016-10-10

    Cosa vorrei ottenere:

    2017 2016
    mele 30 20
    pere 20 45

    Ovvero dividere per categoria le somme totali relative a ogni anno

    Ci sto' provando con :

    Codice PHP:
    SELECT categoriadataimportoSUM(importo) AS importo FROM uscite GROUP BY categoriaYEAR(data
    che penso sia corretto... ma poi non riesco a sviluppare il resto del discorso:

    Codice PHP:
    $result  mysql_query($query) or die('Errore');while ($i mysql_fetch_array($result)){$categoria=$i["categoria"];$data=$i["data"];$data strtotime($data);$data date ("Y"$data);$importo=$i["importo"];
    Print 
    "$categoria - $importo - $importo";


  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    105
    Vorrei aggiungere un po di dettagli ma NON c'e' il tasto modifica, inoltre ogni volta che clicco un link mi chiede nuovamente il login...

    Comunque...

    Quello che vorrei ottenere � una tabella ordinata in righe dove inserire le categorie e colonne dove inserire la somma degli importi di ogni categoria relativa all'anno 2016 su una colonna e all'anno 2017 sull'altra colonna

    Qualche idea?

    GRAZIE

  3. #3
    cerca "mysql pivot" su google, trovi un bel po' di esempi

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    105
    Quote Originariamente inviata da optime Visualizza il messaggio
    cerca "mysql pivot" su google, trovi un bel po' di esempi
    grazie per il consiglio

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Già proverei questo per fare una somma sull'anno sin dall'inizio.

    codice:
    SELECT categoria, year(data), importo, SUM(importo) AS importo FROM uscite GROUP BY categoria, YEAR(data)  
    
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Meglio. Ordinare i dati per agevolarne il trattamento.

    codice:
    SELECT categoria, year(data), importo, SUM(importo) AS importo FROM uscite GROUP BY categoria, YEAR(data) 
    order by categoria, year(data) desc 
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  7. #7
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Esempio di formattazione senza pivot e nel caso in cui tu non abbia dati per una coppia categoria/anno.

    Codice PHP:
    <?php
    $i   
    = array();
    $i[] = array('categoria'=>'banane','data'=>'2017','importo'=>50);
    $i[] = array('categoria'=>'banane','data'=>'2015','importo'=>100);
    $i[] = array('categoria'=>'mele'  ,'data'=>'2017','importo'=>30);
    $i[] = array('categoria'=>'mele'  ,'data'=>'2016','importo'=>20);
    $i[] = array('categoria'=>'mele'  ,'data'=>'2014','importo'=>120);
    $i[] = array('categoria'=>'pere'  ,'data'=>'2017','importo'=>20);
    $i[] = array('categoria'=>'pere'  ,'data'=>'2016','importo'=>45);

    $array2  = array();
    $array3  = array();
    $righe   count($i);
    $index   0;
    $min     9999;
    $max     0;
    while (
    $index $righe) {
      
    $temp $i[$index];
     
    //---- anno minimo e anno massimo
     
    if ($temp['data'] < $min) {
       
    $min $temp['data'];
     }
     if (
    $temp['data'] > $max) {
       
    $max $temp['data'];
     }
     
    //---- preparazione per dati mancanti
     
    $array2[$temp['data']][$temp['categoria']] = $temp['importo'];
     
    $array3[] = $temp['categoria']; 
     
     
    $index++;
    }
    $array3 array_unique($array3);
    sort($array3);
    // Creazione della tabella
    ?>
    <table summary="">
    <tr>
     <td></td><?php  
     
    for ($j=$max;$j>=$min;$j--) {?>
       <td><?php print $j ?> </td><?php
     
    ?>
    </tr><?php 
     
    foreach($array3 as $key => $value) {?>
      <tr>
     <td><?php print $value ?></td><?php
       
    for ($j=$max;$j>=$min;$j--) {
       
    $text = isset($array2[$j][$value]) ? $array2[$j][$value] : 0;?>
       <td><?php print $text  ?></td><?php
      
    }?>
      </tr><?php  
     
    }?>
    </table>
    Dà.
    i2017-01-13-004.JPG
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    105
    Ok ho materiale per studiare un po! GRAZIE DI CUORE !!!

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.