Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 28
  1. #1

    Problema Database (ordinare secondo campo)

    Allora: ho un database così (esempio):

    -------------------------------
    (nome) | (tipo) |
    -------------------------------
    mela | frutta |
    -------------------------------
    pera | frutta |
    -------------------------------
    banana | frutta |
    -------------------------------
    arrosto | carne |
    -------------------------------
    prosciutto | carne |
    -------------------------------

    ecc.ecc...

    Faccio una query e ordino le cose a seconda del tipo e ottengo questo:

    mela frutta
    pera frutta
    banana frutta
    arrosto carne
    prosciutto carne

    e fin qui tutto ok. Io però avrei bisogno di ottenere questo:

    FRUTTA
    mela
    pera
    banana
    CARNE
    arrosto
    prosciutto

    Come posso farlo??? Ovviamente io NON so quanti e quali tipi esistono nel database, potrebbero essere 5, 10, 30...

  2. #2
    GROUP BY tipo
    Che le ali della libertà non perdano mai le piume...

    Gesù salva, Buddha fa backups incrementali.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    1,141
    Potresti fare 2 query...tipo una cosa del genere...

    $query="SELECT DISTINCT tipo from tabella";
    $ris = mysql_query($query);
    while($Search = mysql_array($ris))
    {
    $type=$Search['tipo'];
    $FindFieldOfType= "SELECT * FROM tabella WHERE tipo='$type'";
    $Res = mysql_$query($FindFieldOfType);
    echo"---".$type."---
    ";
    while($row = mysql_fetch_array($Res))
    {
    echo $row['nome']."
    ";
    }
    }

    ciao

  4. #4
    Potresti fare 2 query...tipo una cosa del genere...

    $query="SELECT DISTINCT tipo from tabella";
    $ris = mysql_query($query);
    while($Search = mysql_array($ris))
    {
    $type=$Search['tipo'];
    $FindFieldOfType= "SELECT * FROM tabella WHERE tipo='$type'";
    $Res = mysql_$query($FindFieldOfType);
    echo"---".$type."---
    ";
    while($row = mysql_fetch_array($Res))
    {
    echo $row['nome']."
    ";
    }
    }
    :master: Eh ma così allunga il brodo inutilmente....
    meglio una
    "select * from tabella group by tipo"
    Che le ali della libertà non perdano mai le piume...

    Gesù salva, Buddha fa backups incrementali.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    1,141
    infatti...ha ragione...
    ho toppato

    ciao

  6. #6
    anch'io ho l'abitudine di fare le cose più difficili di quello che potrebbero essere, ma conoscendo un comando in più ti eviti un sacco di lavoro....
    Che le ali della libertà non perdano mai le piume...

    Gesù salva, Buddha fa backups incrementali.

  7. #7
    Probabilmente sto invecchiando male.... ma ai miei tempi GROUP BY ti dava il primo record che incontrava e basta. Il raggruppamento serviva per le funzioni "raggruppanti" tipo MAX, MIN, COUNT, SUMM ....

    Mi devo aggiornare.....

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

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    1,141
    sinceramente ankio,cm piero.mac,avevo sempre utilizzato il GROUP BY con count,max,min...x quello nn ci avevo pensato all'inizio...

  9. #9
    Cacchio..... intendevo order by.... Era sottinteso
    Che le ali della libertà non perdano mai le piume...

    Gesù salva, Buddha fa backups incrementali.

  10. #10
    Originariamente inviato da piero.mac
    Probabilmente sto invecchiando male.... ma ai miei tempi GROUP BY ti dava il primo record che incontrava e basta. Il raggruppamento serviva per le funzioni "raggruppanti" tipo MAX, MIN, COUNT, SUMM ....

    Mi devo aggiornare.....
    infatti serve ancora ora a RAGGRUPPARE tutte le righe in modo da poter utilizzare questo tipo di funzioni su quel gruppo di righe

    se gli serve CONTARE...usare group by è utile...ma se gli serve listare è perfettamente inutile...xche come hai detto te, i risultati che otterrà saranno

    mela frutta
    arrosto carne

    l'unica cosa che puoi fare e che metti, nell'order by prima il tipo e poi il nome in modo che vengono tutti ordinati

    per vedere quando cambia fai in modo molto semplice

    codice:
    $query = mysql_query('SELECT * FROM tabella ORDER BY tipo ASD, nome ASC');
    echo "<table>"
    $old_tipo = '';
    while($row=mysql_fetch_assoc($query)) {
      if ($old_tipo != $row['tipo']) {
        echo "<tr><td>Tipo: {$row['tipo']}</td></tr>";
        $old_tipo = $row['tipo'];
      }
      echo "<tr><td>{$row['nome']}</td></tr>";
    }
    echo "</table>"
    come vedi con pochissime righe di codice, in maniera molto semplice, hai ottenuto quello che volevi

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.