Avatar billede puppetmaster Nybegynder
05. juli 2002 - 11:07 Der er 13 kommentarer og
1 løsning

Fejl i SQL sætning

Ved kørsel af nedenstående SQL får jeg en fejl.

SELECT DISTINCT TOP 20 Artikler_id FROM Historik WHERE user_id='" & Session("brugernavn") & "'" & " ORDER BY Dato DESC

Error Type:
Microsoft JET Database Engine (0x80004005)
ORDER BY clause (Dato) conflicts with DISTINCT.
/helpdesk/historik1.asp, line 11


Er der en workaround til dette?
Avatar billede kasseper Nybegynder
05. juli 2002 - 11:08 #1
Drop Order By
Avatar billede puppetmaster Nybegynder
05. juli 2002 - 11:09 #2
HMmmm......andre ideer? ;)
Avatar billede kasseper Nybegynder
05. juli 2002 - 11:12 #3
Er der ikke et problem i at du prøver at lave order by p åen kollone der ikke findes i dit udtræk...!
Avatar billede puppetmaster Nybegynder
05. juli 2002 - 11:14 #4
Hmmm.....jo, det ville der være, hvis det ikke var fordi jeg gerne vil have den til at selecte distincte kolonner og DEREFTER sortere dem på dato...
Avatar billede puppetmaster Nybegynder
05. juli 2002 - 11:17 #5
Ser ud til at nedenstående virker efter hensigten.

SELECT DISTINCTROW TOP 20 Artikler_id FROM Historik WHERE user_id='" & Session("brugernavn") & "'" & "ORDER BY Dato DESC
Avatar billede puppetmaster Nybegynder
05. juli 2002 - 11:21 #6
Hmmm...og alligevel ikke.........ved du om der eksisterer en pendant til "TOP", som udvælger de "nederste" (BOTTOM)?
(bruger Access 2000)
Avatar billede kasseper Nybegynder
05. juli 2002 - 11:21 #7
Jamen det er ikke det den gør, en mulig sql ser sådan ud :

SELECT DISTINCT TOP 20 Artikler_id FROM Historik WHERE user_id='xxx' ORDER BY Dato DESC

Så trækker den altså kun de 20 første rækker af artikler_id ud, og så kan du ikke sortere på dato...!
Avatar billede kasseper Nybegynder
05. juli 2002 - 11:24 #8
Der findes ikke en pendant til TOP, da TOP kun er lavet for at begrænse udtrækket. Hvis man havde en bottom, så ville det kræve et fuldt udtræk.
Men du kan gøre noget helt andet.
lave en

"SELECT top 20 from ( select ......... order by .. ASC )"
Så vender du hele lortet på hovedet, og tager de 20 øverste...!
Avatar billede puppetmaster Nybegynder
05. juli 2002 - 11:25 #9
Takker for hjælpen, hvis du lige laver et svar, så får du dine point.
Avatar billede kasseper Nybegynder
05. juli 2002 - 11:26 #10
OK
Avatar billede terry Ekspert
05. juli 2002 - 11:36 #11
You CAN use ORDER BY dato without including the dato in th eselect fields but your result will be incorrect. If your interested TOP 20 articles the use ORDER by articles
but if you use ORDER BY dato it will select the TOP 20 dato and NOT articles
Avatar billede kasseper Nybegynder
05. juli 2002 - 11:49 #12
terry >> If you are right, there is something wrong with Access SQL implementation....!
Avatar billede terry Ekspert
05. juli 2002 - 12:03 #13
I dont know what the SQL ANSI standard says but I can see that I CAN use this method in Access AND SQL Server.
But as I say it WILL NOT give the expected result!
Avatar billede kasseper Nybegynder
05. juli 2002 - 12:31 #14
And that is defently not following the 'Standard' in this 'Query Language'.
BUT, as we all know, microsoft rarely does.
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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