Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [MySQL] Indice alfabetico raggruppato

    Salve a tutti,
    so che il titolo non esplica molto quello che voglio fare, ma al momento non mi è venuto in mente altro!

    Vi espongo il mio problema, dovrei, da una tabella creare una specie di "indice" con tutte le lettere dell'alfabeto
    per creare l'indice non è un problema faccio una query di questo tipo

    Codice PHP:
    SELECT DISTINCT
        SUBSTRING
    (`Nome`,1,1) as primalettera,
        
    COUNT(Nome) as cont
      FROM UnPodiNomi
      GROUP BY primalettera
      ORDER BY primalettera 
    a me piacerebbe sempre se possibile farlo tramite sql, raggruppando le lettere fino a che il loro totale consecutivo, non superi il massimo trovato nella tabella.
    vi metto degli esempi sui dati che sono maggiormente esplicativi.

    Risultato query precedente:
    primalettera | cont
    ------------|------
    A | 11
    B | 3
    C | 2
    D | 4
    E | 5
    e così via..

    Vorrei che me li raggruppasse secondo questo criterio
    primalettera | cont
    ------------|------
    A | 11
    B,C | 5
    D,E | 9
    e così via..

    probabilmente dovrò farlo tramite php, però preferivo farlo con qualcosa di efficiente magari tramite mysql.

    Intanto ringrazio per lo scervellamento ^^
    Grazie e buona giornata

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Ciao.
    Non mi è chiara questa frase "raggruppando le lettere fino a che il loro totale consecutivo, non superi il massimo trovato nella tabella."

    Anche b+c+d che è pari a 9 è inferiore al massimo, cioè 11.

  3. #3
    ehm si.. ho sbagliato a scrivere xD

    chiedo scusa.. ti rifaccio l'esempio qui sotto

    primalettera | cont
    ------------|------
    A | 11
    B | 3
    C | 2
    D | 4
    E | 5
    F | 5
    G | 7
    H | 2
    I | 10
    L | 6
    e così via..

    primalettera | cont
    ------------|------
    A | 11
    B,C,D | 9
    E,F | 10
    G,H | 9
    I | 10
    L | 6

    e così via..

    così dovrebbe andare meglio
    scusate per l'errore :P

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    La vedo un pò complicata gestirla direttamente tramite mysql.

    Con php ho pensato una soluzione del genere:

    Codice PHP:
    $array = array('A'=>11,'B'=>3,'C'=>2,'D'=>4,'E'=>5,'F'=>5,'G'=>7,'H'=>2,'I'=>10,'L'=>6,'M'=>3,'N'=>9,'O'=>1,'P'=>10,'Q'=>2);
    $max max($array);

    $arr = array();
    $i 0;
    $tot 0;
    foreach(
    $array as $k => $v) {
        
    $tot+=$v;
          if(
    $tot>$max) {
            
    $tot $v;
            
    $i++;
        }
    $arr[$i][$k] = $v;  
    }

    echo 
    '<pre>';
    print_r($arr); 
    Una volta che hai il tuo array lo cicli, concateni le chiavi, ne sommi i totali e fai ciò che vuoi.

  5. #5
    yeppa.. direi che è la cosa migliore..
    grazie per la dritta

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.