• User Newbie

    problema query

    Salve a tutti,

    id category period title

    1 advertising 2000-2201 Adv la lunga
    2 quadri 2000-2201 La notte
    3 riviste 1999 Rivista 01
    4 quadri 2000-2201 Il giorno
    5 advertising 199 Adv 02

    Ho bisogno di effetuare un select dalla tabella sopra(catalogue),
    che mi selezioni le varie category, esempio advertising, mi conti il totale per ognuna mi esegua un loop stampandomi i dati solo per la categoria esempio:

    [advertising]
    &advtot=

    &id1=
    &title1=
    &period1=

    &id2=
    &title
    &period2=
    e cosi via per tutti i record della categoria advertsing

    [quadri]
    &quadtot=

    &id1=
    &title1=
    &period1=

    &id2=
    &title2=
    &period2=

    e cosi via per tutti i record della categoria quadri

    ecc.

    non risco a venirne fuori.
    Qualche suggerimentio?
    Grazie.


  • Super User

    ciao Manuela_72,
    per i totali puoi fare:

    select count(id) as numero, category from tabella group by category

    in questo modo ottieni il numero di tutte le occorrenze di ogni categoria.

    per la stampa devi fare:

    select distinct category from tabella

    ed ottieni l'elenco delel categorie estratte una sola volta

    while (ciclo sul risultato)
    select * from tabella where category = "nome della categoria estratta dalla select precedente"

    p.s. questa struttura non è una struttura normalizzata per un database!!!

    il tuo caso si risolve facendo:

    tabella categorie:
    id
    titolo

    tabella prodotti
    id
    id_categoria
    prodotto
    etc
    etc

    in questo modo non hai dati ridondanti, inutili e di difficile manutenzione.

    se decidi di cambiare nome ad una categoria devi cambiarla in tutte le occorrenze della tabella rpodotti?

    ciao

    :ciauz:


  • User Newbie

    Grazie Tymba!
    Ho fatto cosi:

    
    mysql_select_db($db, $db_kuz);
    //QUERY per il Numero di categorie e totale quadri per ogni categoria
    $query_tot = mysql_query("SELECT count(cat_categorie.cat_category) AS tot, cat_categorie.cat_category FROM (cat_quadri INNER JOIN cat_categorie ON cat_categorie.cat_id=cat_quadri.cat_id) GROUP BY cat_categorie.cat_category ");
    $tot_gallery= mysql_num_rows($query_tot);
    echo "&rtot={$tot_gallery}";
    	$i=1;
    	while($row=mysql_fetch_array($query_tot)){
    	$tot=$row['tot'];
    	$cat=$row['cat_category'];
    	echo "&r{$i}n=$tot&r$i=$cat"; 
    	$i++;
    }
    //QUERY per selezionare le categorie distintamente
    $query = mysql_query("select distinct cat_category from cat_categorie order by cat_category ASC");
    $v=0;
    while($row=mysql_fetch_array($query)){
    		$cat=$row['cat_category'];
    		echo $cat,"\n";
    		//QUERY per selezionare le categorie in base alla variabile $cat
    		$sub =mysql_query("SELECT *FROM (cat_quadri INNER JOIN cat_categorie ON cat_categorie.cat_id=cat_quadri.cat_id) where cat_category= '$cat'");
    		$v++;
    		$i=1;
    		//stampo tutti i dati relativi alla categoria
    			while($row2=mysql_fetch_array($sub)){
    			$id=$row2['id'];
    			$title=$row2['title'];
    			$period=$row2['period'];
    			$tech=$row2['technique'];
    			$img=$row2['picture'];
    			$thumb=$row2['thumb'];
    			//echo "&id{$v}r{$i} ={$id}&r{$v}t{$i} ={$title}&p{$v}r{$i} ={$period}\n";
    			echo "&r{$v}t{$i}={$title}&r{$v}p{$i}={$period}&r{$v}s{$i}={$tech}&r{$v}i{$i}={$img}&r{$v}_t{$i}={$thumb}";
    
    			$i++;
    		}
    }
    

    mi serviva l'output in questo modo per poter integrare tutto in flash, senza dovere eseguire cicli in array in seguito.

    By

    Manuela