Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di eraclito
    Registrato dal
    May 2002
    Messaggi
    1,273

    [mysql] query con risultati sparsi in giro

    ciao a tutti,

    per realizzare un'applicativo estraggo i risultati dal db con una query un po' pesante.

    I risultati devono essere riaggregati e impaginati in base a dei flag all'interno della tabella.

    ad esempio tutti i risultati con flag=1 sono da inserire nella tabella1, flag=2 tabella2 ecc.

    ad oggi io faccio tante query quanti sono i flag, la cosa mi sembra però poco furba (visto che i flag sono una ventina e come detto la query non è leggerissima)

    Qualcuno sa consigliarmi un metodo alternativo?

    eraclito
    L'apprendere molte cose non insegna l'intelligenza
    Voglio avere dubbi più chiari

  2. #2
    mmm così non è facile aiutarti..si un pochino + esplicito!
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

  3. #3
    Utente di HTML.it L'avatar di eraclito
    Registrato dal
    May 2002
    Messaggi
    1,273
    Originariamente inviato da Whitecrowsrain
    mmm così non è facile aiutarti..si un pochino + esplicito!
    provo a riformulare la domanda

    tabella:
    nome
    cognome
    flag (numeri da 1 a 20)

    gli 1 sono impiegati, i 2 geometri ecc.

    nella visualizzazione della pagina vorrei mettere l'elenco dei geometri sotto la scritta geometri (che è in alto a destra), gli impiegati subito sotto, i facchini a sinsitra ecc.

    per ora io faccio 20 query diverse (where flag=$numero)
    e estraggo i risultati separatamente.

    vorrei però estrarre i risultati con un'unica query e poi risucire a gestire l'impaginazione. Non mi viene in mente però nessun metodo...

    spero sia + chiaro

    L'apprendere molte cose non insegna l'intelligenza
    Voglio avere dubbi più chiari

  4. #4
    io farei così:
    codice:
    $res = mysql_query ("SELECT * FROM tabella ORDER BY flag");
    while ($db_data = mysql_fetch_row($res)) {
    switch ($db_data[3]){
        case 1: 
            $result1 .= "<tr><td>$db_data[1]</td> <td>$db_data[2]</td>
            break;
        case 2: 
            $result2 .= "<tr><td>$db_data[1]</td> <td>$db_data[2]</td>
            break;
    .
    .
    .
    case 20:
         $result20 .= "<tr><td>$db_data[1]</td> <td>$db_data[2]</td>
            break;
    
    }
    
    
    }
    poi nelle tabelle di visualizzazione metti in $result di n, relativo al flag.

    N.B. ho usato mysql_fetch_row invece di my_sql_fetch_array perchè è leggermente più veloce, e a quanto ho capito è proprio la velocità d'esercuzione il tuo problema.

    Silent Engine

    <?="hello world"?>

  5. #5
    Utente di HTML.it L'avatar di eraclito
    Registrato dal
    May 2002
    Messaggi
    1,273
    Originariamente inviato da Pak
    io farei così:
    codice:
    $res = mysql_query ("SELECT * FROM tabella ORDER BY flag");
    while ($db_data = mysql_fetch_row($res)) {
    switch ($db_data[3]){
        case 1: 
            $result1 .= "<tr><td>$db_data[1]</td> <td>$db_data[2]</td>
            break;
        case 2: 
            $result2 .= "<tr><td>$db_data[1]</td> <td>$db_data[2]</td>
            break;
    .
    .
    .
    case 20:
         $result20 .= "<tr><td>$db_data[1]</td> <td>$db_data[2]</td>
            break;
    
    }
    
    
    }
    poi nelle tabelle di visualizzazione metti in $result di n, relativo al flag.

    N.B. ho usato mysql_fetch_row invece di my_sql_fetch_array perchè è leggermente più veloce, e a quanto ho capito è proprio la velocità d'esercuzione il tuo problema.
    mi sembra una bella idea...
    ci lavoro per adattarla al caso reale (un po' + incasinato)

    grazie
    L'apprendere molte cose non insegna l'intelligenza
    Voglio avere dubbi più chiari

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.