12. december 2003 - 20:31Der er
4 kommentarer og 1 løsning
Optimer sql-kode
Hej
Jeg har noget kode som laver en menu af 3 niveauer - Group, Category og Link - kalder jeg dem. En gruppe må kun vises, hvis der finde mindst en kategori i den, og en kategori må kun vises, hvis der findes mindst et link i den.
Menget simpelt, men det er min kode ikke blevet, fordi jeg ikke er så go til sql - den tager et min. at udføre på serveren og det er min webudbyder ikke så glad for ;-)
Så hvis du kan komme optimeret version, så giver jeg dig 200 points. :-D
strSQL="select ID, Title FROM LINKS_GROUPS order by Title" set rs = dataConn.execute(strSQL) do while not rs.BOF and not rs.EOF strGroupTitle = "<br><b>" & rs("Title") & "</b><br>"
strSQL2="select ID, Title FROM LINKS_CATEGORIES where GroupID = " & rs("ID") & " order by Title" set rs2 = dataConn.execute(strSQL2)
do while not rs2.BOF and not rs2.EOF strSQL3="select ID, Title FROM LINKS_FSH where Publish <= '" & alternativeDate() & "' and CategoryID = " & rs2("ID") set rs3 = dataConn.execute(strSQL3)
if not rs3.EOF then if not strGroupTitle = rs("title") then strMenu = strMenu & strGroupTitle strGroupTitle = "" end if strMenu = strMenu & "<a href=""index.asp?ID=" & rs2("ID") & "&title=" & rs2("Title") & """>" & rs2("Title") & "</a><br>" end if
SQL = "SELECT DISTINCT LINKS_GROUPS.Title AS GROUPS_Title, LINKS_CATEGORIES.Title AS CAT_Title, LINKS_CATEGORIES.id FROM (LINKS_GROUPS INNER JOIN LINKS_CATEGORIES ON LINKS_GROUPS.id = LINKS_CATEGORIES.groupID) INNER JOIN LINKS_FSH ON LINKS_CATEGORIES.id = LINKS_FSH.CategoryID WHERE LINKS_FSH.Publish <= '" & alternativeDate() & "' ORDER BY LINKS_GROUPS.Title, LINKS_CATEGORIES.Title;"
SQL = "SELECT DISTINCT LINKS_GROUPS.Title AS GROUPS_Title, LINKS_CATEGORIES.Title AS CAT_Title, LINKS_CATEGORIES.id FROM (LINKS_GROUPS INNER JOIN LINKS_CATEGORIES ON LINKS_GROUPS.id = LINKS_CATEGORIES.groupID) INNER JOIN LINKS_FSH ON LINKS_CATEGORIES.id = LINKS_FSH.CategoryID WHERE LINKS_FSH.Publish <= '" & alternativeDate() & "' ORDER BY LINKS_GROUPS.Title, LINKS_CATEGORIES.Title;"
set rs = dataConn.execute(SQL) do while not rs.BOF and not rs.EOF if strGroupTitle <> rs("GROUPS_Title") then strMenu = strMenu & "<br><b>" & rs("GROUPS_Title") & "</b><br>" strGroupTitle = rs("GROUPS_Title") end if
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.