webForumDet fria alternativet

Tre olika summeringar i samma recordset/array?

9 svar · 397 visningar · startad av Rikard

RikardMedlem sedan dec. 199917 055 inlägg
#1

Häpp, dags att skämma ut sig lite med min inkompetens. ;)

Ur en databas skulle jag vilja hämta antalet medlemmar i tre olika medlemsgrupper. Dessa grupper skiljs åt med hjälp av värdet "roleID". Jag funderar på om man kan göra SQL-frågorna och därefter placera dessa summeringar i en array eller om man måste göra tre separata SQL-frågor, med tre separata recordset?

Det jag skulle vilja göra är alltså att placera resultatet av följande tre SQL-frågor i en array.

strSQL = "SELECT COUNT(""userid"") FROM t_users WHERE roleID = 1 AND official = -1"
[petas in i arrayen på rad 1] = objConn.Execute(strSQL)

strSQL = "SELECT COUNT(""userid"") FROM t_users WHERE roleID = 2 AND official = -1"
[petas in i arrayen på rad 2] = objConn.Execute(strSQL)

strSQL = "SELECT COUNT(""userid"") FROM t_users WHERE roleID = 3 AND official = -1"
[petas in i arrayen på rad 3] = objConn.Execute(strSQL)
K@llenMedlem sedan mars 20032 667 inlägg
#2

Vad använder du för databashanterare? Borde gå att göra i samma fråga med lite subselects om nu din dbms har stöd för det. :)

RikardMedlem sedan dec. 199917 055 inlägg
#3

MS SQL 2000.

Subselects? Menar du nestlade select-frågor? Om så är fallet har jag för mig att man ska undvika det?

K@llenMedlem sedan mars 20032 667 inlägg
#4

Tyvärr är jag dålig på hur sql-dialekten ser ut i MS SQL 2000.

Det beror på vad du menar med nestlade frågor. Att hämta data och köra ytterligare en sql-fråga i loopen bör man dock undvika. Är det detta du menar med nestlade frågor? Jag skulle inte tro att det skulle vara någon nackdel att köra dina tre count() i en och samma fråga, i jämförelse med att köra tre separata frågor.

RikardMedlem sedan dec. 199917 055 inlägg
#5

Med nestlad menar jag en SELECT-sats i en SELECT-sats. Jag tror att det var emission som nämnde det vid något tillfälle. :)

Tack för att du försökte i alla fall. :)

SannyWMedlem sedan jan. 2003438 inlägg
#6

Må detta bli en helt felaktig lösning, men skjuter från höften och presenterar den ändå. :r

Det går inte att du gör som här:
http://www.webforum.nu/showthread.php?s=&postid=1069760#post1069760

Att du hämtar de olika array med sub(roleId) ??

RikardMedlem sedan dec. 199917 055 inlägg
#7

Hm... där hängde jag inte med på vad det var du hänvisar till. :)

SannyWMedlem sedan jan. 2003438 inlägg
#8

Som sagt, jag lämnar inga garantier för att hjärnan har förstått dig rätt :)

Trodde du möjligen kunde lösa ditt problem liknande nedan:

Sub Selectgrupp(ByVal strRoleID)
'// Posthantering 
arrRecords = GetRows("SELECT COUNT(""userid"") FROM t_users WHERE roleID = "&strRoleID&" AND official = -1")
 
'// Posthantering 
If IsArray(arrRecords) THEN

	  For i = 0 To Ubound(arrRecords,2)

	  '// Skriver ut detaljerna om varje id	
	  Response.Write arrRecords(0,i)

    	  Next
End If
End Sub
%>
	<% Call Selectgrupp("1") %>
        <% Call Selectgrupp("2") %>
        <% Call Selectgrupp("3") %>
LarsGMedlem sedan dec. 200012 464 inlägg
#9
SELECT roleName,COUNT(*) 
FROM t_users 
WHERE roleID in (1,2,3)
 AND official = -1
group by roleName

Byt kolumnnamn där så är lämpligt.

Subselects? Menar du nestlade select-frågor? Om så är fallet har jag för mig att man ska undvika det?

Nys.

Flyttas från ASP

RikardMedlem sedan dec. 199917 055 inlägg
#10

Kalas LarsG, som vanligt när du är i farten!

Tackar!

Tack även SannyW för att du ansträngde dig. :)

130 ms totalt · 3 externa anrop · v20260731065814-full.16f3d68c
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)