Avatar billede suppenudel Nybegynder
06. marts 2004 - 22:13 Der er 20 kommentarer og
1 løsning

Hent de seneste 5 nyheder

Jeg er lige ved at lave noget med nyheder på forsiden, men den skal kun hente de seneste 5 ud af min access-database. Min SQL ser således ud:

strSQL = "SELECT Dato AS [Date & time] , Overskrift as [Title], Navn AS [Posted by], Nyhed as [News] FROM Nyheder ORDER BY Beskednr DESC"

Skal man have gang i noget max(beskednr) ? Jeg kan ikke lige helt se det, er ikke den vildeste koder :-)
Avatar billede arne_v Ekspert
06. marts 2004 - 22:34 #1
Prøv med:

LIMIT 5
Avatar billede simonia Nybegynder
06. marts 2004 - 22:35 #2
LIMIT [start,] antal_rows

Tror du kan bruge LIMIT til det og så bare begrænse dine poster til 5:)
Avatar billede arne_v Ekspert
06. marts 2004 - 22:35 #3
strSQL = "SELECT Dato AS [Date & time] , Overskrift as [Title], Navn AS [Posted by], Nyhed as [News] FROM Nyheder ORDER BY Beskednr DESC LIMIT 5"
Avatar billede suppenudel Nybegynder
06. marts 2004 - 22:45 #4
Okay..

Jeg har prøvet med Arnes løsning, men den skriver at der er en fejl i ORDER BY-delsætningen
Avatar billede simonia Nybegynder
06. marts 2004 - 22:46 #5
Limit skal heller ikke hænge sammen med order by jo
Avatar billede simonia Nybegynder
06. marts 2004 - 22:48 #6
OM LIMIT
LIMIT bruges også til at begrænse sit udtræk af data. Hvor WHERE bruges til at hente data, der opfylder kriterier, så bruges LIMIT til at beskære det udsnit af data, ens forespørgsel (query) ellers ville returnere. Hvis ens query ville resultere i, at man fik fx 10 rækker (rows) returneret, så kan man med LIMIT sige, at man kun fx ønsker de 5 af rækkerne.

Syntaksen for LIMIT er således:LIMIT [start,] antal_rows
Det betyder, at hvis man angiver et kriterium, så er det antallet af rækker, man ønsker returneret. Hvis man giver to kriterier, med komma som separator, så er det første kriterium, hvilken række i de returnerede rækker, man starter ved, og nummer to, hvor mange rækker fra startrækken man ønsker at få med. Startrækken kaldes ofte offset. Man kan begrænse det førnævnte eksempel således:LIMIT 5
Avatar billede suppenudel Nybegynder
06. marts 2004 - 22:58 #7
Du er da blevet en hel haj til det .NET Christina! :-)
Avatar billede suppenudel Nybegynder
06. marts 2004 - 22:58 #8
Men kan du så ikke lige skrive strengen om så den virker, med LIMIT?
Avatar billede arne_v Ekspert
06. marts 2004 - 23:02 #9
LIMIT skal komme efter ORDER BY

http://www.mysql.com/doc/en/SELECT.html

SELECT [STRAIGHT_JOIN]
      [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
      [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] [HIGH_PRIORITY]
      [DISTINCT | DISTINCTROW | ALL]
    select_expression,...
    [INTO {OUTFILE | DUMPFILE} 'file_name' export_options]
    [FROM table_references
      [WHERE where_definition]
      [GROUP BY {unsigned_integer | col_name | formula}
        [ASC | DESC], ... [WITH ROLLUP]]
      [HAVING where_definition]
      [ORDER BY {unsigned_integer | col_name | formula}
        [ASC | DESC] ,...]
      [LIMIT [offset,] row_count | row_count OFFSET offset]
      [PROCEDURE procedure_name(argument_list)]
      [FOR UPDATE | LOCK IN SHARE MODE]]
Avatar billede simonia Nybegynder
06. marts 2004 - 23:17 #10
Hahaha hvem er suppenuddel:)
Avatar billede simonia Nybegynder
06. marts 2004 - 23:26 #11
strSQL = "SELECT Dato AS [Date & time] , Overskrift as [Title], Navn AS [Posted by], Nyhed as [News] FROM Nyheder ORDER BY Beskednr DESC, LIMIT 5";
Prøv denne
Avatar billede suppenudel Nybegynder
06. marts 2004 - 23:40 #12
Jeg er jo din gamle klassekammerat :-)

Men den virker altså ikke endnu. Den skriver "Character is not valid"
Avatar billede simonia Nybegynder
06. marts 2004 - 23:45 #13
OKay, hvis det er en kammerat ligefrem, kan det j0 ikke være så mange og jeg gætter på Mickey ;)

Prøv lige at maile mig din database, så vil jeg prøve at skrive sqlen der.
Avatar billede simonia Nybegynder
06. marts 2004 - 23:50 #14
strSQL = "SELECT Dato AS [Date & time] , Overskrift as [Title], Navn AS [Posted by], Nyhed as [News] FROM Nyheder LIMIT 5, ORDER BY Beskednr DESC"

Det er den måde, jeg normalt bruger den:
SELECT * FROM Tabel LIMIT 30;

Men jeg skriver mest SQL i Access, der er den lidt anderledes ;)
Avatar billede runesoft Nybegynder
07. marts 2004 - 16:37 #15
strSQL = "SELECT top 5 Dato AS [Date & time] , Overskrift as [Title], Navn AS [Posted by], Nyhed as [News] FROM Nyheder ORDER BY Beskednr DESC"
Avatar billede runesoft Nybegynder
07. marts 2004 - 16:38 #16
LIMIT er da vist noget mySql syntax
Avatar billede arne_v Ekspert
07. marts 2004 - 16:41 #17
Det er det.

Jeg troede at det var MySQL, men der står jo klar of tydeligt Access.

Det er øjnene at man først bliver blind på !
Avatar billede suppenudel Nybegynder
09. marts 2004 - 01:23 #18
Tak for hjælpen alle sammen, ikke mindst Christina!

Jeg donerer hermed mine sparsomme point til Runesoft, som til min store glæde fremsagde den rigtige løsning! :-)
Avatar billede suppenudel Nybegynder
09. marts 2004 - 01:27 #19
Desværre virker DESC-bestemmelsen ikke mere. Den skal helst hente de fem nyheder som at der ligger ved de 5 højeste "beskednr"
Avatar billede suppenudel Nybegynder
09. marts 2004 - 01:32 #20
JO, det virker fint nok, det er bare ved at være for sent for mig! :-/
Hygge!
Avatar billede simonia Nybegynder
09. marts 2004 - 10:07 #21
:O) Held og lykke med projektet søjde:)
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