Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    53

    campo progressivo per gruppo mysql [forse OT?]

    non ho trovato un forum in html.it che tratti solo di db allora provo a postare qui il mio problema visto che php e mysql vanno quasi sempre a braccetto

    se sono OT scusatemi

    ho una tabella così strutturata:
    id gruppo nome
    1 1234 AAAA
    2 1234 BBBB
    3 1234 CCCC
    4 2345 DDDD
    5 2345 AAAA
    6 3456 BBBB
    7 3456 EEEE
    8 3456 FFFF

    vorrei ottenere da una query il seguente risultato:
    id gruppo nome id gruppo
    1 1234 AAAA 1
    2 1234 BBBB 1
    3 1234 CCCC 1
    4 2345 DDDD 2
    5 2345 AAAA 2
    6 3456 BBBB 3
    7 3456 EEEE 3
    8 3456 FFFF 3

    cioè un valore crescente per gruppo

    è possibile?

    ciao a tutti

  2. #2
    Utente di HTML.it L'avatar di echoweb
    Registrato dal
    Sep 2008
    Messaggi
    419
    Ciao,

    allora tu hai una tabella così:

    tabella_a
    id gruppo nome
    1 1234 AAAA
    2 1234 BBBB
    3 1234 CCCC
    4 2345 DDDD
    5 2345 AAAA
    6 3456 BBBB
    7 3456 EEEE
    8 3456 FFFF


    devi farne un'altra così:

    tabella_b
    id categoria
    1 1234
    2 2345
    3 3456

    SELECT a.id AS ID, a.gruppo AS GRUPPO, a.nome AS NOME, b.categoria AS CATEGORIA
    FROM tabella_a a, tabella_b b
    WHERE tabella_a.id=tabella_b.id


    "Non soffocare la tua ispirazione e la tua immaginazione,
    non diventare lo schiavo del tuo modello"

    Vincent van Gogh

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    53
    Originariamente inviato da echoweb
    Ciao,

    allora tu hai una tabella così:

    tabella_a
    id gruppo nome
    1 1234 AAAA
    2 1234 BBBB
    3 1234 CCCC
    4 2345 DDDD
    5 2345 AAAA
    6 3456 BBBB
    7 3456 EEEE
    8 3456 FFFF


    devi farne un'altra così:

    tabella_b
    id categoria
    1 1234
    2 2345
    3 3456

    SELECT a.id AS ID, a.gruppo AS GRUPPO, a.nome AS NOME, b.categoria AS CATEGORIA
    FROM tabella_a a, tabella_b b
    WHERE tabella_a.id=tabella_b.id
    ho fatto un esempio errato di cosa volevo ottenere, lo ripropongo:

    id gruppo nome id gruppo
    1 1234 AAAA 1
    15 1234 BBBB 2
    20 1234 CCCC 3
    25 2345 DDDD 1
    33 2345 AAAA 2
    42 3456 BBBB 1
    43 3456 EEEE 2
    51 3456 FFFF 3
    52 3456 FFFF 4

    per intenderci un campo progressivo che inizia da 1 per ogni gruppo

    ciao e grazie per la risposta

    ciao

  4. #4
    Utente di HTML.it L'avatar di echoweb
    Registrato dal
    Sep 2008
    Messaggi
    419
    I dati puoi organizzarli in un altro modo, cioè adoperare altre tabelle o devi usare per forza questa struttura?? :master:


    "Non soffocare la tua ispirazione e la tua immaginazione,
    non diventare lo schiavo del tuo modello"

    Vincent van Gogh

  5. #5
    Utente di HTML.it L'avatar di echoweb
    Registrato dal
    Sep 2008
    Messaggi
    419
    Se organizzi le tabelle in questo modo, il tutto ti viene molto piu' facilmente:

    GRUPPO
    id gruppo
    1 1234
    2 2345
    3 3456

    NOME
    id nome
    1 AAAA
    2 BBBB
    3 CCCC
    4 DDDD
    5 EEEE

    LINK
    id_gruppo id_nome
    1 1
    1 2
    1 3
    2 1
    2 2
    2 3
    3 1

    In questo modo se ti colleghi alla tabella LINK avresti la corrispondenza tra NOME e GRUPPO, già con i numeri ordinati...

    Tramite una SELECT riesci a recuperare i vari dati e strutturarli come ti servono a te...


    "Non soffocare la tua ispirazione e la tua immaginazione,
    non diventare lo schiavo del tuo modello"

    Vincent van Gogh

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    53
    Originariamente inviato da echoweb
    Se organizzi le tabelle in questo modo, il tutto ti viene molto piu' facilmente:

    GRUPPO
    id gruppo
    1 1234
    2 2345
    3 3456

    NOME
    id nome
    1 AAAA
    2 BBBB
    3 CCCC
    4 DDDD
    5 EEEE

    LINK
    id_gruppo id_nome
    1 1
    1 2
    1 3
    2 1
    2 2
    2 3
    3 1

    In questo modo se ti colleghi alla tabella LINK avresti la corrispondenza tra NOME e GRUPPO, già con i numeri ordinati...

    Tramite una SELECT riesci a recuperare i vari dati e strutturarli come ti servono a te...
    non posso variare la struttura delle tabelle in questo caso, ma comunque la mia richiesta era generica per tutti i casi simili a questo

  7. #7
    Utente di HTML.it L'avatar di echoweb
    Registrato dal
    Sep 2008
    Messaggi
    419
    Il risultato che ti aspetti di ottnere, lo devi usare per costruire una select, per caso?


    "Non soffocare la tua ispirazione e la tua immaginazione,
    non diventare lo schiavo del tuo modello"

    Vincent van Gogh

  8. #8
    Utente di HTML.it L'avatar di echoweb
    Registrato dal
    Sep 2008
    Messaggi
    419
    Nel caso in cui i dati che ti servono li devi usare in una select, ti posto il codice che fornisce i dati delle OPTION nel formato che chiedi:

    Codice PHP:
    echo"<select>
    <option></option>
    "
    ;

    $conta=0;
    $q="select id,gruppo,nome from tab2 order by ID asc";
    $sql=@mysql_query($q);
    while(
    $record=@mysql_fetch_array($sql))
    {
        
    $q_id=$record['id'];
        
    $q_gruppo=$record['gruppo'];
        
    $q_nome=$record['nome'];
       
        
    $q_2="select count(*) as tot from tab2 where gruppo=$q_gruppo ";
        
    $sql_2=@mysql_query($q_2);
        
    $elenco=@mysql_result($sql_2,0,"tot");    

        if(
    $conta<$elenco)
        {
            
    $conta++;
        }
        else
        {
            
    $conta=1;
        }

        echo 
    "<option >$q_id $q_gruppo $q_nome $conta</option>";
     
       
    }
    echo 
    "</select>"
    Aggiungo anche .sql per PhpAdmin.

    codice:
    CREATE TABLE `tab2` (
      `id` varchar(10) NOT NULL default '',
      `gruppo` varchar(10) NOT NULL default '',
      `nome` varchar(10) NOT NULL default ''
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    
    -- 
    -- Dump dei dati per la tabella `tab2`
    -- 
    
    INSERT INTO `tab2` VALUES ('1', '1234', 'AAAA');
    INSERT INTO `tab2` VALUES ('2', '1234', 'BBBB');
    INSERT INTO `tab2` VALUES ('3', '1234', 'CCCC');
    INSERT INTO `tab2` VALUES ('4', '2345', 'DDDD');
    INSERT INTO `tab2` VALUES ('5', '2345', 'AAAA');
    INSERT INTO `tab2` VALUES ('6', '3456', 'BBBB');
    INSERT INTO `tab2` VALUES ('7', '3456', 'EEEE');
    INSERT INTO `tab2` VALUES ('8', '3456', 'FFFF');


    "Non soffocare la tua ispirazione e la tua immaginazione,
    non diventare lo schiavo del tuo modello"

    Vincent van Gogh

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    53
    Originariamente inviato da echoweb
    Nel caso in cui i dati che ti servono li devi usare in una select, ti posto il codice che fornisce i dati delle OPTION nel formato che chiedi:

    Codice PHP:
    echo"<select>
    <option></option>
    "
    ;

    $conta=0;
    $q="select id,gruppo,nome from tab2 order by ID asc";
    $sql=@mysql_query($q);
    while(
    $record=@mysql_fetch_array($sql))
    {
        
    $q_id=$record['id'];
        
    $q_gruppo=$record['gruppo'];
        
    $q_nome=$record['nome'];
       
        
    $q_2="select count(*) as tot from tab2 where gruppo=$q_gruppo ";
        
    $sql_2=@mysql_query($q_2);
        
    $elenco=@mysql_result($sql_2,0,"tot");    

        if(
    $conta<$elenco)
        {
            
    $conta++;
        }
        else
        {
            
    $conta=1;
        }

        echo 
    "<option >$q_id $q_gruppo $q_nome $conta</option>";
     
       
    }
    echo 
    "</select>"
    Aggiungo anche .sql per PhpAdmin.

    codice:
    CREATE TABLE `tab2` (
      `id` varchar(10) NOT NULL default '',
      `gruppo` varchar(10) NOT NULL default '',
      `nome` varchar(10) NOT NULL default ''
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    
    -- 
    -- Dump dei dati per la tabella `tab2`
    -- 
    
    INSERT INTO `tab2` VALUES ('1', '1234', 'AAAA');
    INSERT INTO `tab2` VALUES ('2', '1234', 'BBBB');
    INSERT INTO `tab2` VALUES ('3', '1234', 'CCCC');
    INSERT INTO `tab2` VALUES ('4', '2345', 'DDDD');
    INSERT INTO `tab2` VALUES ('5', '2345', 'AAAA');
    INSERT INTO `tab2` VALUES ('6', '3456', 'BBBB');
    INSERT INTO `tab2` VALUES ('7', '3456', 'EEEE');
    INSERT INTO `tab2` VALUES ('8', '3456', 'FFFF');
    anzitutto grazie per la risposta

    la provo e poi ti faccio sapere

    l'unica cosa è che volevo ottenere il tutto senza l'utilizzo di php, ma solo con mysql

    ho pensato di utilizzare una function o una stored procedures ma specilamente con le seconde sono ancora molto ignorante

    magari qualcuno ha fatto qualcosa di simile con le stored procedures?

    ciao a tutti e buona giornata

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.