Hola, hace tiempo en este foro (o en otro, no recuerdo) me encontre este codigo, yo no le he probado pero lo guarde en mi maquina, supongo que te puede servir. Aqui utiliza el concepto de Ciudad y Estado, pero (si no entendi mal) es lo que quieres.
Código:
<%@ LANGUAGE="VBSCRIPT" %>
<%
DIM ConnProducto,SQL,RS1,Estados
SET ConnProducto = Server.CreateObject("ADODB.Connection")
ConnProducto.Open "UID=usuario;PWD=password;DSN=Nombre del DSN"
SET RS1= Server.CreateObject("ADODB.Recordset")
SQL = "SELECT * FROM Estados"
SET RS1 = ConnProducto.Execute(SQL)
%>
<HTML>
<HEAD>
<SCRIPT LANGUAGE=vbscript>
<!--
Sub Estados_onchange
document.forms("uno").submit()
End Sub
-->
</SCRIPT>
</HEAD>
<BODY>
<Form name="uno" action="Combo.asp?ProEstado=1">
<%IF Request("Estados")="" THEN
Estados=1
Else
Estados=cint(Request("Estados"))
ENd if%>
<P><SELECT id=Estados style="WIDTH: 173px" name=Estados>
<%Do Until RS1.EOF%>
<OPTION value="<%=RS1(0)%>" <%If Cstr(Request("Estados"))=Cstr(RS1(0)) THEN%>SELECTED<%End if%>> <%=RS1(1)%></OPTION>
<%RS1.MoveNext
Loop%>
</SELECT></P>
<%
Dim RS2,SQL2
SET RS2=Server.CreateObject("ADODB.Recordset")
IF Request("Estados")="" Then
SQL2="SELECT * FROM Ciudades WHERE Idestado =1"
Else
SQL2="SELECT * FROM Ciudades WHERE Idestado =" & Request("Estados")
End if
SET RS2 = ConnProducto.Execute(SQL2)%>
<P><SELECT id=Ciudades style="WIDTH: 173px" name="Ciudades">
<%Do Until RS2.EOF%>
<OPTION value="<%=RS2(0)%>"><%=RS2(1)%></OPTION>
<%RS2.MoveNext
Loop
%>
</SELECT></P>
</Form>
</BODY>
</HTML>