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 dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.