Avatar billede swamboo Seniormester
27. august 2003 - 23:10 Der er 10 kommentarer og
1 løsning

DISTINCT og TOP 3 - kan man ikke det samtidig??

Tja - det var egentlig mit spørgsmål - men det jeg gerne ville var:

sql = "SELECT DISTINCT top 3 dato FROM tabel1 order by dato desc"

Men den siger:
Microsoft OLE DB Provider for ODBC Drivers fejl '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'DISTINCT dato'.

Er det at blande 2 komandoer, eller gør jeg noget forkert...???

Mange tak!
Avatar billede eagleeye Praktikant
27. august 2003 - 23:15 #1
Prøv at sætte TOP 3 først

sql = "SELECT top 3 DISTINCT dato FROM tabel1 order by dato desc"
Avatar billede swamboo Seniormester
27. august 2003 - 23:22 #2
Tak - men den giver alle de forskellige datoer fra [dato] - ikke kun de første 3 (eller sidste er det jo...)
Jeg prøvede at rette det til top 2 - men alle 4 kom med alligevel..
Avatar billede ocp Nybegynder
27. august 2003 - 23:22 #3
Det virker fint når jeg kører noget lignende i en Access query... det gør det til gengæld IKKE når jeg bytter rundt på top og distinct som eagleeye foreslår.
Avatar billede eagleeye Praktikant
27. august 2003 - 23:24 #4
Det er nok fordi der er flere ens datoer.. og så går den galdt i byden med TOP og DISTINCT.. Prøv at tilføje , ID (autonummer kolonnen) efter ORDER by:


sql = "SELECT top 3 DISTINCT dato FROM tabel1 order by dato desc, ID desc"
Avatar billede swamboo Seniormester
27. august 2003 - 23:27 #5
Nej - desværre - men jeg er ret ny i det her, så det kan være jeg har lavet noget hø et andet sted. Min simple startkode ser sådan ud:

sql = "SELECT DISTINCT dato FROM tabel1 order by dato desc"

set rstemp = conntemp.execute(sql)

    do while not (rstemp.eof or rstemp.bof)

sql = "SELECT top 3 DISTINCT dato FROM tabel1 order by dato desc, ID desc"
   
    response.write "<br>" & rstemp("DATO")
   
    rstemp.movenext
    loop
    rstemp.close   

Og hos mig giver den alle 4 svarmuligheder... (der er 4 datoer i tabellen)
Avatar billede swamboo Seniormester
27. august 2003 - 23:28 #6
Der er en fejl i ovenstående - select er kun angivet een gang!!!
Avatar billede eagleeye Praktikant
27. august 2003 - 23:29 #7
Den SQL som du bruger til noget, altså den øverste i din kode har ikke TOP 3 med så derfor kommer alle med:

sql = "SELECT DISTINCT dato FROM tabel1 order by dato desc"  '<<-- MANGLER TOP 3

set rstemp = conntemp.execute(sql)
Avatar billede ocp Nybegynder
27. august 2003 - 23:30 #8
Det er da klart - du sætter først det korrekte sql efter du har dannet dit recordset. Prøv dette:

sql = "SELECT top 3 DISTINCT dato FROM tabel1 order by dato desc, ID desc"

set rstemp = conntemp.execute(sql)

    do while not (rstemp.eof or rstemp.bof)

    response.write "<br>" & rstemp("DATO")
   
    rstemp.movenext
    loop
    rstemp.close
Avatar billede swamboo Seniormester
27. august 2003 - 23:36 #9
Ok - jeg har nu følgende kode:
sql = "SELECT top 3 DISTINCT dato FROM tabel1 order by dato desc, ID desc"

set rstemp = conntemp.execute(sql)

    do while not (rstemp.eof or rstemp.bof)

    response.write "<br>" & rstemp("DATO")
   
    rstemp.movenext
    loop
    rstemp.close

Men får svaret:
    Syntax error (missing operator) in query expression 'DISTINCT dato'.
Avatar billede eagleeye Praktikant
27. august 2003 - 23:40 #10
din SQL til at starte med var rigtig prøv at bytte dem rundt igen:

sql = "SELECT DISTINCT top 3 dato FROM tabel1 order by dato desc, ID desc"
Avatar billede swamboo Seniormester
27. august 2003 - 23:44 #11
DETTE VIRKER:

sql = "SELECT DISTINCT top 2 dato FROM tabel1 order by dato desc"

set rstemp = conntemp.execute(sql)

    do while not (rstemp.eof or rstemp.bof)

    response.write "<br>" & rstemp("DATO")
   
    rstemp.movenext
    loop
    rstemp.close

Mange tak for hjælpen...
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