Hur gör man för att på bästa/resurs snålaste sättet en loop i en loop?
Exempel:
<%
SQL="SELECT huvud_cat,titel FROM forum ORDER BY diskusrubrik"
Set Rs=Server.CreateObject("ADODB.Recordset")
Rs.open SQL, Connect, 3,3
Do until Rs.eof
Response.Write Rs(1) &"<hr>"
'------- Börja loopa ut underkategorierna ---------------------------
SQL="SELECT rubrik,datum FROM forum_poster WHERE huvud_cat="& Rs(0) &" ORDER BY datum DESC LIMIT 5"
Set Rs2=Server.CreateObject("ADODB.Recordset")
Rs2.open SQL, Connect, 3,3
Response.Write Rs2(0) &" - "& Rs2(1)
Rs2.movenext
loop
Rs2.Close : Set Rs2 = Nothing
'------------------------------------
Rs.movenext
loop
Rs.Close : Set Rs = Nothing
%>
Finns det något snabbare och mer resurssnålt sätt?
Använder en MySQL 4.0.18-nt databas.
Ja, att bara ställa en SQL-fråga borde vara snabbare:
SELECT rubrik, datum, huvud_cat, titel FROM forum ORDER BY diskusrubrik, huvud_cat, datum DESC
Sen kan du använda en variabel som du sparar föregående huvudrubrik i. Så fort aktuell huvudrubrik inte är samma som den i variabeln skriver du ut huvudrubriken och sparar den aktuella rubriken i variabeln.
Som det ser ut nu börjar du ju med en SQL-fråga för att få fram alla huvudkategorier. Sedan kör du ytterligare en SQL-fråga för varje huvudkategori för att få fram respektive underkategorier.
Det blir många SQL-frågor till slut. Att bara köra en istället, som plockar fram samtliga huvudkategorier och underkategorier med en gång borde gå snabbare.