Lista categorie ordinata in base a quanti prodotti contengono (2 tabelle) | SQL & MySQL

Topic: Pubblico - Composto da 4 Posts di 2 Utenti.

07 Dicembre, 2011 16:43 #1
nearweb
Utente

nearweb
Registrato: Dec, 2011
Posts: 2
Offline

Ciao a tutti,
io ho due tabelle:
- categories -> (id, name)
- products -> (id, id_categories, title ...)

Ovviamente nel campo products.id_categories ci sono solo valori presenti nella tabella categories.

Ho creato un menu laterale stampando a video la lista delle categorie e, con un count, il numero di elementi contenuti in ognuna di esse.

Quello che vorrei fare ora è avere la lista di categorie ordinata secondo il numero di prodotti con l'id_categories uguale alla voce stampata. Spero di essere stato chiaro..

posto anche il codice per sicurezza:

 1$query = "SELECT * FROM categories";
 2$result = mysql_query($query);
 3while ($array = mysql_fetch_array($result)) {
 4  $tmpidproduct=$array['id'];
 5  $query1 = "SELECT id FROM products WHERE id_categories=$tmpidproduct";
 6  $result1 = mysql_query($query1);
 7  $count = mysql_num_rows($result1);
 8  echo "<li><a";
 9  if ($array['name']==$currentcategory) { 
10    echo ' class="active"';
11  }  
12  echo ' href="prodotti.php?categoryid='.$array['id'].'">- '.$array['name'].' <span>('.$count.')</span></a></li>';
13}

Ultima modifica 07 Dicembre, 2011 16:44 di nearweb

07 Dicembre, 2011 17:43 #2
re-verse
Moderatore

re-verse
Registrato: Jul, 2008
Posts: 312
Offline

Ciao,
in realtà puoi ottenere lo stesso risultato con una sola query, purtroppo non ho modo di provarla al momento, ma provo a buttarla giù lo stesso:

1SELECT c.name, count(p.id) AS num_prods
2FROM categories AS c
3INNER JOIN products AS p ON p.id_categories=c.id
4GROUP BY c.id
5ORDER BY num_prods

Vedi un po' se ti funziona ;)


Salvatore DC

La mente è come un paracadute: funziona solo se si apre. A.Einstein.

07 Dicembre, 2011 18:36 #3
nearweb
Utente

nearweb
Registrato: Dec, 2011
Posts: 2
Offline

Sei un drago!! ho aggiunto DESC alla fine ed ha funzionato al primo colpo!! grazie mille

07 Dicembre, 2011 19:03 #4
re-verse
Moderatore

re-verse
Registrato: Jul, 2008
Posts: 312
Offline

Prego, non c'è di che ;)


Salvatore DC

La mente è come un paracadute: funziona solo se si apre. A.Einstein.

Condividi su:

Loggati o Registrati per replicare