22. december 2003 - 01:36Der er
11 kommentarer og 1 løsning
Access - SELECT TOP
Jeg foretager flg SQL Statement mod en Access 2000 Database:
"SELECT TOP 3 * FROM fspLoppe ORDER BY Loppe_Dato"
"fspLoppe" er en forespørgsel i Access, og ikke en anlmindelig tabel.
Problemet: Den viser alle (ca 100) poster på min ASP side. og ikke kun de 3 øverste.
Hvis jeg ændrer SQL statement'en til: "SELECT TOP 3 * FROM fspLoppe"
... så virker det fint. Bortset fra at jeg må undvære ORDER BY.
Lign problemer har jeg med andre forespørgsler i mit ASP projekt. Holdes SELECT TOP statementen simpel, så virker den, men hvis jeg sætter bare de mindste kriterier ind i SQL'en så viser den bare alle poster der findes i den givne forespørgsel eller tabel.
Det er fordi TOP tager 3 forskellige poster og ikke bare de første 3 poster. Så hvis fspLoppe er ens for dem alle tager den 3 forskellige fspLoppe det kan være det er 50 poster.
Det kan dog løses ved at tilføje at den også skal sortere på en autonummer kolonne, så det bare som der skal være dem med højest ID eller laves ID som skal vises:
"SELECT TOP 3 * FROM fspLoppe ORDER BY Loppe_Dato, id"
Jeg har lige testet det og SELECT TOP 3 * FROM fspLoppe ORDER BY Loppe_Dato virker fint. Så der er nok et eller andet i din forespørgsel.
eagleeye >> det du skriver med at "Så hvis fspLoppe er ens for dem alle tager den 3 forskellige fspLoppe det kan være det er 50 poster." det kan den ikke da fspLoppe er en forespørgsel i Access. Der er kun en fspLoppe, så den kan ikke vælge 3 forskellige fspLoppe. fspLoppe indholder værdier fra nogle tabeller.
clscableguy >> Det jo totalt ligemeget om fspLoppe er en tabel eller en forespørgsel den returnere et sæt data. Prøv du istedet at bruge fornuftige test data inden du udtaler dig om hvorvidt det er rigtigt.
Løsningen er som jeg har beskrevet tilføje ID til order by eller kun bruger ID i order by. Jeg gentager gerne noget af teksten: TOP vælger ikke mellem ens værdier.
Og kan man ikke få ført en ID igennem forespørgselen af den ene eller anden grund kan man lave det som dette med en select i en select:
SQL = "SELECT TOP 3 * FROM (SELECT TOP 3 * FROM fspLoppe ORDER BY Loppe_Dato);"
Synes godt om
Slettet bruger
24. december 2003 - 02:28#12
Det fungerede hvert fald at tilføje ID i ORDER BY
Jeg troede bare, at min Loppe_Dato var unik, da den gerne skulle fange både dag og klokkeslet. Jeg må tage fejl.
PS: "SELECT TOP 3 FROM fspLoppe WHERE......" virkede ikke - Access vil åbenbar have sin "*".
Tak for hjælpen.
Synes godt om
Ny brugerNybegynder
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.