Avatar billede m_sorensen Nybegynder
06. januar 2004 - 10:16 Der er 6 kommentarer og
1 løsning

SELECT COUNT og WHERE

Jeg har lige fået hjælp af Eagleeye, til at lave følgende SQL-sætning:

SQL = "SELECT TOP 20 COUNT(*) AS found, author FROM comments GROUP BY author ORDER BY COUNT(*) DESC;"

Nu har jeg siddet i 2 dage, og prøvet at få den til, kun at vælge en TOP 20 med kommentarer hvis dato er nyere end en dato jeg angiver.

Nogen forslag til hvordan jeg løser dette ?
Avatar billede mm12010 Nybegynder
06. januar 2004 - 10:23 #1
SQL = "SELECT TOP 20 COUNT(*) AS found, author FROM comments WHERE datoFelt > #"& dinDato &"# GROUP BY author ORDER BY COUNT(*) DESC;"
Avatar billede m_sorensen Nybegynder
06. januar 2004 - 10:33 #2
Af en eller anden mærkelig grund, tæller den alle kommentarer, og er ligeglad med WHERE klausulet.

her er min kode:

datestr = request.querystring("datestr")
   
if datestr = "" then
   
datestr = 30
   
end if   
   
testdate = dateadd("d",-datestr,date())
       
SQL = "SELECT TOP 20 COUNT(*) AS found, author FROM comments WHERE addeddate > #" & testdate & "# GROUP BY author ORDER BY COUNT(*) DESC;"
set RS = conn.execute(SQL)
Avatar billede medions Nybegynder
06. januar 2004 - 10:44 #3
SQL = "SELECT TOP 20 COUNT(*) AS found, author FROM comments WHERE DateDiff('d',addeddate," & testdate & ") > 1 GROUP BY author ORDER BY id DESC;"
set RS = conn.execute(SQL)

Prøv sådan...

//>Rune
Avatar billede m_sorensen Nybegynder
06. januar 2004 - 10:48 #4
Den finder slet ingen ting så.. Men jeg har så også rettet "ORDER BY id" til "ORDER BY COUNT(*)", da pointen er at den skal hive top 20 brugere der har kommenteret mest.
Avatar billede m_sorensen Nybegynder
06. januar 2004 - 10:50 #5
Har det nogen indflydelse, at feltet addeddate indeholder en now() ?
Avatar billede eagleeye Praktikant
06. januar 2004 - 13:03 #6
Husk når du bruger dato'er via SQL for Access at den bruger US eller UK dato format som er yyyy-mm-dd eller mm-dd-yyyy.. Når man så indsætter en dato i dansk dato format, hvor dagen er først så bytter den rundt på månede og dag i datoen. Der er en løsning og der er at bruge dato funktionerne Year, Month og Day til at formatere din dato.



Så prøv dette eks som kun skulle tælle dem for de sidste 14 dage (din dato kan sætte ind idet for det med DateAdd):

dato = DateAdd("d",-14,Date)
dato = Year(dato) & "-" & Month(dato) & "-" & Day(dato)

SQL = "SELECT TOP 20 COUNT(*) AS found, author FROM comments WHERE addeddate >= #" & dato & "# GROUP BY author ORDER BY COUNT(*) DESC;"


Skal lige side kolonne addeddate skal være af type Date/time og det har ikke noget indflydelse at den indeholder now().
Avatar billede m_sorensen Nybegynder
06. januar 2004 - 13:41 #7
Eagleeye, du er bomben. Endnu en gang virker det i første hak. Point til dig.
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
Kurser inden for grundlæggende programmering

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