Avatar billede lifeenergy Nybegynder
23. oktober 2006 - 11:36 Der er 8 kommentarer og
1 løsning

Flere COUNT i samme SELECT-sætning

Hej,

Jeg har f.eks. 2 sætninger som disse:

Denne viser antal brugere som har en sidste aktive tid for 95 sekunder siden:

SELECT COUNT(p.UserName) AS Antal FROM profiles p WHERE p.LastActive>=NOW() - INTERVAL 95 SECOND

Her viser den alle brugere:
SELECT COUNT(p.UserName) AS Antal FROM profiles p

Kan man sætte disse 2 sætninger sammen til én sætning. Bemærk at WHERE Clause kun skal gælde for den ene. Ikke for begge!
Avatar billede lifeenergy Nybegynder
23. oktober 2006 - 11:39 #1
Jeg skrev:
>Denne viser antal brugere som har en sidste aktive tid for 95 sekunder siden
Tilføjelse:
...Eller mindre end 95 sek siden
Avatar billede arne_v Ekspert
24. oktober 2006 - 04:03 #2
med en nyere MySQL kan du prøve:

SELECT (SELECT COUNT(p.UserName) AS Antal FROM profiles p WHERE p.LastActive>=NOW() - INTERVAL 95 SECOND),(SELECT COUNT(p.UserName) AS Antal FROM profiles p)
Avatar billede lifeenergy Nybegynder
24. oktober 2006 - 10:36 #3
Jeps jeg prøver det. Jeg kører nyere MySQL som understøtter Sub Selections
Avatar billede lifeenergy Nybegynder
24. oktober 2006 - 10:37 #4
hov der står "Antal" 2 gange, de skal vel have hver sit alias?
Avatar billede arne_v Ekspert
24. oktober 2006 - 13:48 #5
SELECT (SELECT COUNT(p.UserName) AS Antal1 FROM profiles p WHERE p.LastActive>=NOW() - INTERVAL 95 SECOND),(SELECT COUNT(p.UserName) AS Antal2 FROM profiles p)
Avatar billede lifeenergy Nybegynder
27. oktober 2006 - 13:06 #6
Jeg får en fejl ved at benytte det. Har ellers benyttet mig af sub selections andre steder.

Set rs = Con.Execute ("SELECT (SELECT COUNT(p.UserName) AS Antal FROM profiles p WHERE p.LastActive>=NOW() - INTERVAL 95 SECOND),(SELECT COUNT(p.UserName) AS Antal2 FROM profiles p);")
intNumOnline = rs("Antal")
intNumUsers = rs("Antal2")

Fejltype:
ADODB.Recordset (0x800A0CC1)
Elementet kan ikke findes i den samling, der svarer til det anmodede navn eller ordenstal.
Avatar billede arne_v Ekspert
27. oktober 2006 - 13:44 #7
SELECT (SELECT COUNT(p.UserName) FROM profiles p WHERE p.LastActive>=NOW() - INTERVAL 95 SECOND) AS Antal1,(SELECT COUNT(p.UserName) FROM profiles p)  AS Antal2

måske
Avatar billede lifeenergy Nybegynder
30. oktober 2006 - 19:42 #8
Ja tak... Det virker!
Point?
Avatar billede arne_v Ekspert
30. oktober 2006 - 19:55 #9
ja tak
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester