Ciao a tutti!

Ho una tabella di un database dove vengono memorizzati i dati di alcuni prodotti.
I prodotti sono suddivisi in categorie e sottocategorie.

Faccio un esempio per far capire meglio.

Tabella:

N.B. L'id_categoria della categoria B è 2... ho fatto un errore quando ho creato questa immagine... sorry!


Con questo codice mi faccio restituire solo i nomi delle categorie (A, B, C, ecc.), con dei link che mi portano al dettaglio di ogni categoria nel file elenco_prodotti.asp.
codice:
<table width="100%" border="0" cellspacing="2" cellpadding="2">
<tr>
<%	
sqlString = "SELECT * FROM accessori GROUP BY id_categoria"
	
SET RS = Conn.Execute(sqlString)
WHILE NOT RS.EOF
	
Response.Write("<td valign=""top"" colspan=""3"">")
Response.Write("<a href=""elenco_prodotti.asp?categoria=")
Response.Write RS("id_categoria")
Response.Write(""">")
Response.Write UCASE(RS("categoria"))
Response.Write("</a>")
Response.Write("</td></tr>")

RS.MoveNext
WEND
%>
</table>
Questo è il file elenco_prodotti.asp che mi mostra il dettaglio per ogni categoria.

codice:
<table width="100%" border="1" cellspacing="2" cellpadding="2">
<tr>
<%
categoria_scelta = TRIM(Request("categoria"))

sqlString = "SELECT * FROM accessori GROUP BY id_categoria"
    
SET RS = Conn.Execute(sqlString)	
WHILE NOT RS.EOF
	
IF RS("id_categoria") = clng(TRIM(Request("categoria"))) Then
	  
Response.Write("<td valign=""top"" colspan=""2"">")
Response.Write("<a href=""elenco_prodotti_compresso.asp"">")
Response.Write UCASE(RS("categoria"))
Response.Write("</a>")
Response.Write("
")
Response.Write("<table border=""1"" cellspacing=""2"" cellpadding=""2"">")
Response.Write("<tr><td></td><td>Codice</td></tr><tr>")
    
sqlString = "SELECT * FROM accessori WHERE attiva=1 And id_categoria=" & RS("id_categoria")
	
	
SET RS1 = Conn.Execute(sqlString)
WHILE NOT RS1.EOF
	
Response.Write("<td>[img][/img]</td>")
RS2.MoveNext
WEND
	
Response.Write("<td><a href=""dettaglio.asp?id=")
Response.Write RS1("id")
Response.Write(""">")
Response.Write RS1("codice")
Response.Write("</a></td></tr>")

RS1.MoveNext
WEND
Response.Write("</table>")
Else
    
Response.Write("<td valign=""top"" colspan=""3"">")
Response.Write("<a href=""elenco_prodotti.asp?categoria=")
Response.Write RS("id_categoria")
Response.Write(""">")
Response.Write UCASE(RS("categoria"))
Response.Write("</a>")
Response.Write("")
	
End If
	
Response.Write("</td></tr>")
RS.MoveNext
WEND
%>
</table>
Io vorrei riuscire a mostrare tutti i prodotti, ma facendo in modo che per tutti quelli dove c'è la stessa immagine, venga caricata un'immagine sola e non tante immagini (sempre uguali) quanti sono i prodotti.
Il criterio per raggruppare i prodotti con la stessa immagine è la sottocategoria: prodotti che appartengono alla stessa sottocategoria, hanno la stessa immagine.

Questo è ciò che ottengo io:


Questo è ciò che vorrei ottenere:


Ho fatto un po' di esperimenti, ma non riesco ad arrivare al punto.

Visto che sto usando una tabella, io pensavo di contare quante sono le righe per ogni sottocategoria di ogni categoria e poi far condividere la stessa immagine per più righe, impostando la proprietà rowspan al valore uguale al conto fatto.

Sto brancolando un po' nel buio...

Qualche suggerimento?

Grazie!