webForumDet fria alternativet

5 count i samma?

16 svar · 723 visningar · startad av Bosse168

Bosse168Medlem sedan nov. 20031 018 inlägg
#1

Hur gör man för att göra 5 olika counts i samma RecSet?


Set rs = Connect.Execute("SELECT Count(username) From members")

Set rs2 = Connect.Execute("SELECT Count(username) From members Where status = 'online'")

Set rs3 = Connect.Execute("Select id From gb Order BY id Desc LIMIT 1")

Set rs4 = Connect.Execute("Select messageid From mailin Order BY messageid Desc LIMIT 1")

Set rs5 = Connect.Execute("SELECT Count(postid) From forumpost")
Engine^Medlem sedan dec. 20003 887 inlägg
#2
strSQL = "SELECT Count(username), (SELECT Count(username) FROM members WHERE status = 'online'), " & _
         "(SELECT Count(postid) FROM forumpost) FROM members"

Set objRS = Connect.Execute(strSQL, , 1)

Response.Write objRS(0) & " : " & objRS(1) & " : " & objRS(2)
Bosse168Medlem sedan nov. 20031 018 inlägg
#3

Får detta fel mess:

Microsoft OLE DB Provider for ODBC Drivers error '80040e09'

[TCX][MyODBC]You have an error in your SQL syntax near 'SELECT Count(username) FROM members WHERE status = 'online'), (SELECT Count(post' at line 1

Jesper TMedlem sedan nov. 20017 144 inlägg
#4

Testa att klamra: Count([username])

Bosse168Medlem sedan nov. 20031 018 inlägg
#5

Nej det funkade inte.
Såg att jag hade glömt o säga att jag använder en MySQL databas.

Jesper TMedlem sedan nov. 20017 144 inlägg
#6

Jag tror inte du kan avända username som kolumnnamn i mySql testa att byta namn på kolumen.

Bosse168Medlem sedan nov. 20031 018 inlägg
#7

jo det funkar.

Bosse168Medlem sedan nov. 20031 018 inlägg
#8

Ingen som vet hur det ska se ut?

Bosse168Medlem sedan nov. 20031 018 inlägg
#9

Ingen som kan vet hur den SQL satsen ska se ut?

Engine^Medlem sedan dec. 20003 887 inlägg
#10

Du kan ju försöka ta reda på om det fungerar alls med MySQL. Jag kan ge dig ett testförslag

SELECT Count(*), (SELECT Count(*) - 1 FROM members) FROM members

Fungerar inte den så är det inte troligt att den typen av fråga fungerar alls. Men det kan nog gå att lösa med UNION (MySQL 4.0.0)

SELECT Count(username) FROM members
UNION
SELECT Count(username) FROM members WHERE status = 'online'
UNION
SELECT Count(postid) FROM forumpost
ConnyFoxMedlem sedan aug. 20011 087 inlägg
#11

Hmm jag har ett problem med koden ovan, vad gör jag för fel?

felet pekar på den markerade raden


Mysql = "SELECT Count(ID) FROM wgs_categories where belongto = 0 UNION SELECT count(ID) from wgs_categories UNION SELECT count(ID) from wgs_scripts"
set RS = connect.Execute(MySQL)

dim scripts, categories, languages
languages = rs(0)
[B]categories = rs(1)[/B] 
scripts = rs(2)
@ndersMedlem sedan juni 200032 969 inlägg
#12

Du hämtar bara ett fält, så då är det svårt att försöka sno data från icke-existerande fält två och tre i ditt recordset. Ditt recordset består av tre poster, med ett fält var.

ConnyFoxMedlem sedan aug. 20011 087 inlägg
#13

Det där förstog jag inte riktigt.. hur skall jag bära mig åt för att kunna ha flera count och kunna lagra varje count resultat i en variabel? Använder MySQL

@ndersMedlem sedan juni 200032 969 inlägg
#14

Du får tre poster, inte tre fält. Därför kan du inte hänvisa till fält två och tre, eftersom de inte finns. Resultatet ser ut så här:

-------------
123
192
28

Den första posten innehåller resultatet från den första frågan i din union, den andra posten från den andra frågan, osv. Du får helt enkelt gå igenom ditt recordset. Efter movenext är det ett nytt värde, ny variabel.

nikoMedlem sedan juni 20022 599 inlägg
#15

Om man man sen vill undvika (iofs sällsynta men) väldigt svårfunna buggar så bör det väl egentligen vara "UNION ALL"?

I övrigt förstår jag inte alls varför man vill ställa frågan på det här sättet. Det känns mest som om det ger krystad och svårläst kod i jämförelse med ursprungskoden.

@ndersMedlem sedan juni 200032 969 inlägg
#16

niko skrev:

Om man man sen vill undvika (iofs sällsynta men) väldigt svårfunna buggar så bör det väl egentligen vara "UNION ALL"?

Helt klart, my bad.

I övrigt förstår jag inte alls varför man vill ställa frågan på det här sättet. Det känns mest som om det ger krystad och svårläst kod i jämförelse med ursprungskoden.

Det håller jag med om. Tjänar man egentligen någonting på att lägga ihop dessa till en query? Försumbart, skulle jag gissa på.

Tack för tankarna, niko.

ConnyFoxMedlem sedan aug. 20011 087 inlägg
#17

Ok nu förstår jag, tackar för förklaringen och får se om jag lägger ihop dom, hade fått uppfattningen om att det skulle vara mer optimerat än 3 separata sql satser.

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