Avatar billede jesperwerge Nybegynder
12. august 2003 - 14:19 Der er 10 kommentarer og
2 løsninger

SQL forspørgsel med select count

Hej,

jeg forsøger at få et resultat ud fra en database, hvor at et af felterne er forskellige antal dage i et forløb jeg vil gerne have de antal records som har mindst 15 og max 30 dage, jeg har skrevet forspørgslen således:

strSQL = "SELECT COUNT(AutoID) AS sp43 FROM resrec WHERE sp4 <'15' AND sp4 >'30'"
    set oRS = oDB.execute(strSQL)
    response.write "<p> Mellem 2 til 4 uger: <B>"& oRS("sp43") &" - "& formatnumber(Cdbl(oRS("sp43")/ialtt) * pct,2) &" %</B></p>"

men det virker ikke, jeg ved at der er mindst 10 stk. og den viser nul.

Er der et geni som kan se fejlen? ialtt= antal records i alt og pct = 100 (dette er defineret længere oppe i asp siden)

mvh

Jesper
Avatar billede Slettet bruger
12. august 2003 - 14:24 #1
strSQL = "SELECT COUNT(AutoID) AS sp43 FROM resrec WHERE (sp4 < 15 OR sp4 >30)"
Avatar billede Slettet bruger
12. august 2003 - 14:26 #2
Du kan ikke sige at det samme felt skal være både mindre end et tal og samtidig større end et andet, derfor skal det være OR og så har jeg fjerne ' omkring dine tal da det jo ikke giver mening at søge på at noget skal være mindre end en tekststreng :-)
Avatar billede proaccess Nybegynder
12. august 2003 - 14:26 #3
Det kan også være at du skal bruge HAVING...

strSQL = "SELECT COUNT(AutoID) AS sp43 FROM resrec HAVING sp4<15 OR sp4>30"
Avatar billede Slettet bruger
12. august 2003 - 14:28 #4
Eller between
strSQL = "SELECT COUNT(AutoID) AS sp43 FROM resrec WHERE sp4 between 15 AND 30)"
Avatar billede Slettet bruger
12. august 2003 - 14:28 #5
Fjern lige den sidste ) fra ovenstående.
Avatar billede proaccess Nybegynder
12. august 2003 - 14:34 #6
Det er jo BARE en ombytning af < og >, som skal til...

strSQL = "SELECT COUNT(AutoID) AS sp43 FROM resrec WHERE sp4 >=15 AND sp4 <=30"
Avatar billede jesperwerge Nybegynder
12. august 2003 - 15:07 #7
det virker ikke :o( kun hvis jeg skriver '15' om tallene, det står i en takst treng og ikke som tal i databasen.

tak for inspirationene, jeg forsøger videre
Avatar billede Slettet bruger
12. august 2003 - 15:12 #8
Så vil jeg foreslå dig at lave dem om til tal da det er nemmere når du skal søge på intervaller. Ellers kan du lave noget med
Where sp4 in ('15','16' og så videre) det er bare omstændigt.
Avatar billede Slettet bruger
12. august 2003 - 15:13 #9
Hvilken database er det? I MS SQL kan man lave noget convert, eks.
strSQL = "SELECT COUNT(AutoID) AS sp43 FROM resrec WHERE convert(integer,sp4)  between 15 AND 30"
Avatar billede jesperwerge Nybegynder
12. august 2003 - 20:12 #10
det er en access database
Avatar billede Slettet bruger
12. august 2003 - 20:14 #11
Den har jeg ikke men du kan prøve at kigge i hjælpen og se om der er en lignende funktion.
Avatar billede proaccess Nybegynder
13. august 2003 - 08:54 #12
strSQL = "SELECT COUNT(AutoID) AS sp43 FROM resrec WHERE Val(sp4) BETWEEN 15 AND 30"
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