Raggruppare dati in categorie con group by

davide1982

Nuovo Utente
14 Giu 2010
26
0
0
Buongiorno avrei bisogno di aiuto per effettuare una query di raggruppamento delle noizie presenti nel mio sito.

Ho una tabella news di cui riporto le colonne interessate:
id, titolo, categoria, data

Le news sono suddivise in 4 categorie e assegno una determinata categoria con i numeri da 1 a 4.

esempio:
id:1
titolo: news1
categoria: 2
data: timestamp

Il risultato che vorrei ottenere è la suddivisione in colonne (categorie) delle ultime news (le ultime dieci per esempio), così:
Cat1
news4
news3
news2
news1

Cat2
news2
news1

Cat3
news3
news2
news1

Cat4
news1


Il massimo che sono riuscito a ottenere invece è la suddivisione in categorie con solo l'ultimo record per ciascuna di esse:
Cat1
news4

Cat2
news2

Cat3
news3

Cat4
news1

Con questa query:
SELECT id,titolo,categoria FROM news GROUP BY categoria ORDER BY data DESC

Ho provato a guardare molti altri tipi di query, anche più complesse, ma non sono sicuro di quale faccia più al caso mio.... :(
 
ciao
non so se usi php ma ti scrivo come potresti fare in php

PHP:
<?php
$ris_c=mysql_query("SELECT categoria FROM news GROUP BY categoria ORDER BY data DESC");
while($riga_c=mysql_fetch_array($ris_c)){
	$cat=$riga_c['categoria'];
	echo "categoria: $cat<br>";
	$ris_n=mysql_query("SELECT * FROM news WHERE categoria='$cat' ORDER BY data DESC");
	while($riga_n=mysql_fetch_array($ris_n)){
		$new=$riga_n['titolo'];
		$data=$riga_n['data'];
		echo"news del ".date("d-m-Y",$data).": $new<br>";
	}
}
?>
prova al massimo non funzia
 
Grazie, ho preso spunto dal tuo consiglio e alla fine ho fatto così:

$categoria è un array contenente le categorie

PHP:
<div id="links_to_news">
<?php
	for ($i=1;$i<6;$i++) {
?>
       <p class="greenText uppercase"><?=$categoria[$i-1]?></p>
<?php
       $query_news = mysql_query("SELECT id,titolo,categoria FROM news WHERE pubblica = '1' AND categoria = '".$i."' ORDER BY data DESC",$link);
       while ($row_news = mysql_fetch_array($query_news)) {
       $id = $row_news['id'];
       $id_cat = $row_news['categoria'];
       $titolo = $row_news['titolo'];
?>
      <p><a href="news.php?cat=<?=$id_cat?>&amp;id=<?=$id?>"><strong><?=$titolo?></strong></a><br /><br /></p>
<?php
	}
?>
</div>
<?php
	}
 

Discussioni simili