Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777

    [php/mysql] Raggruppare Con Group By

    salve questo è il codice
    sono statistiche del quiz che indicano
    il numero di domande e la categoria presenti nel db
    esempio
    7 di astronomia
    5 di scopri l'intruso
    ecc ecc

    Codice PHP:
    $specialmysql_query"SELECT *,count(*) as tot FROM quiz GROUP BY speciale,intruso" ) or die( mysql_error() );
    while(
    $speciali_quiz=mysql_fetch_array($special)){
    $speciali=$speciali_quiz['speciale'];
    $specialitrim($speciali);
    $intruso=$speciali_quiz['intruso'];
    $n_speciali$speciali_quiz['tot'];
    if(
    $intruso==1){
    echo 
    "[b]$n_speciali[/b] di <a href=\"http://www.atuttascienza.altervista.org/ricerca.php?search=" $intruso "&amp;precisa=1\">Scopri l'intruso</a>
    "
    ;
    }
    if (
    $speciali !=""){
    echo 
    "[b]$n_speciali[/b] di <a href=\"http://www.atuttascienza.altervista.org/ricerca.php?search=" $speciali "&amp;precisa=1\">"ucfirst($speciali) ." </a>
    "
    ;
    }
    }
    echo 
    "</div></div>";
    echo 
    "</div>"
    fa riferimento a una tabella che ha campo speciale di tipo text che indica la categoria speciale e poi un campo intruso con possibilità 0 o 1 qualora la domanda sia del tipo "scopri l'intruso tra"
    tutto ok se non il fatto che ,quando la categoria speciale è enunciata e contemporaneamente il campo intruso è 1 , mi crea una cosa di queste
    7 di astronomia
    5 scopri l'intruso
    1 di astronomia
    1 scopri l'intruso
    ora vorrei che indicasse
    8 di astronomia
    e 6 scopri l'intruso

  2. #2
    non ho capito molto la struttura della tabella, ma secondo me basta togliere il raggruppamento su intruso, e lasciare solo su speciale


  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    Originariamente inviato da pugia
    non ho capito molto la struttura della tabella, ma secondo me basta togliere il raggruppamento su intruso, e lasciare solo su speciale

    la tabella è costituita da alcuni campi tra cui speciale e intruso
    il group by mi permette di fare conteggiare cosi
    9 di anatomia
    9 di astronomia ecc ecc
    intruso non è un campo "speciale" perchè scopri l'intuso di può essere sia una domanda di anatomia sia di astronomia ecc ecc
    io ho pensato che per non complicarmi la vita di fare una nuova query

  4. #4
    Il comportamento della query è giusto..
    raggruppa per speciale e per intruso...quindi
    astrologia 0
    astrologia 1
    sono due raggruppamenti diversi.
    Ti conviene fare due query distinte, finchè le righe son relativamente poche, oppure ti fai la somma degli intrusi nel ciclo, raggruppando solo per speciale, e salvi i risultati in un array che elabori dopo

    codice:
    $cat = array();
    while $riga = fetch_assoc (
      if !isset($cat[$riga["id"]]) (
        $cat[$riga["id"]]["nome"] = $riga["nome_categoria"]
      )
      $cat[$riga["id"]]["intruso"]++;
      )
    )
    qualcosa del genere insomma

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    Originariamente inviato da Dascos
    Il comportamento della query è giusto..
    raggruppa per speciale e per intruso...quindi
    astrologia 0
    astrologia 1
    sono due raggruppamenti diversi.
    Ti conviene fare due query distinte, finchè le righe son relativamente poche, oppure ti fai la somma degli intrusi nel ciclo, raggruppando solo per speciale, e salvi i risultati in un array che elabori dopo

    codice:
    $cat = array();
    while $riga = fetch_assoc (
      if !isset($cat[$riga["id"]]) (
        $cat[$riga["id"]]["nome"] = $riga["nome_categoria"]
      )
      $cat[$riga["id"]]["intruso"]++;
      )
    )
    qualcosa del genere insomma
    grazie ho risolto

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.