25. marts 2004 - 13:23Der er
18 kommentarer og 1 løsning
Optimering af sql-kode
Hej
Det virker, men det er meget langsomt afviklet, så mit håb er, en vil optimere min kode for mig:
'## Forum_SQL - Find brugernes antal af indlæg strSql = "SELECT MEMBER_ID FROM " & strTablePrefix & "MEMBERS" set rs = my_Conn.execute(strSQL)
while not rs.eof strSql = "SELECT COUNT(R_AUTHOR) as counter FROM " & strTablePrefix & "REPLY WHERE R_AUTHOR = " & RS("MEMBER_ID") set rs2 = my_Conn.execute(strSQL)
I et inbound callcenter, hvor identiteten på den, der ringer ind, skal bekræftes, kan kontrollen nu foregå i telefonkøen. Det understøtter fem centrale KPI'er for callcentre.
Jeg ved ikke rigtig hvordan jeg skulle kunne optimerer den men jeg kan give dig et link til joins: http://www.w3schools.com/sql/sql_join.asp måske denne kunne gøre din kode lettere?
UPDATE FORUM_MEMBERS A SET M_POSTS = (SELECT COUNT(R_AUTHOR) FROM FORUM_REPLY WHERE R_AUTHOR = A.MEMBER_ID)
Microsoft OLE DB Provider for ODBC Drivers (0x80040E09) [TCX][MyODBC]You have an error in your SQL syntax near 'A SET M_POSTS = (SELECT COUNT(R_AUTHOR) FROM FORUM_REPLY WHERE R_AUTHOR = A.MEMB' at line 1
(Jeg anvender mysql 3, hvis det har noget at sige her).
Microsoft OLE DB Provider for ODBC Drivers (0x80040E09) [TCX][MyODBC]You have an error in your SQL syntax near 'SELECT COUNT(R_AUTHOR) FROM FORUM_REPLY WHERE R_AUTHOR = FORUM_MEMBERS.MEMBER_ID' at line 1
UPDATE FORUM_MEMBERS SET M_POSTS = (SELECT COUNT(R_AUTHOR) FROM FORUM_REPLY WHERE R_AUTHOR = FORUM_MEMBERS.MEMBER_ID)
Hov, den indsætter det forkerte antal i brugerens profil. Den burde optælle hvor mange indlæg den enkelte bruger har, men i stedet optæller den samtlige indlæg.
strSQL = "SELECT MEMBER_ID, COUNT(R_AUTHOR) as counter FROM " & strTablePrefix & "REPLY, " & strTablePrefix & "MEMBERS WHERE MEMBER_ID = R_AUTHOR" set rs = my_Conn.execute(strSQL)
while not rs.eof strSQL = "UPDATE " & strTablePrefix & "MEMBERS SET M_POSTS = " & rs("counter") & " WHERE MEMBER_ID = " & RS("MEMBER_ID") my_Conn.execute(strSQL) rs.movenext wend
Men nu siger den blot: Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [TCX][MyODBC]Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause
SELECT MEMBER_ID, COUNT(R_AUTHOR) as counter FROM " & strTablePrefix & "REPLY, " & strTablePrefix & "MEMBERS WHERE MEMBER_ID = R_AUTHOR GROUP BY MEMBER_ID
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.