09. juni 2007 - 15:08
Der er
12 kommentarer og 1 løsning
Hvordan henter man resten, undtagen den nyeste?
Hej alle sammen, overskriften forklare næsten alt. Hvordan henter man f.x. Nyheder fra en database, men hvor den så henter alle sammen, undtagen den der sidst er blevet tilføjet? lad os anslå der er 10 nyheder, så skal den hente nyhed 1,2,3,4,5,6,7,8 og 9, men ikke id 10 altså den nyeste? kan man det?
Annonceindlæg fra HP
Ja, det kan man godt. Men det kommer an på hvordan man ved hvilken der er den nyeste. Har de et ID, timestamp eller lign? Du er nødt til at forklare hvordan den tabel de ligger i ser ud.
Det kan gøre med noget i stil med: select * from TabelNavn where id not in (select top 1 from TabelNavn order by id desc) Jeg mener at man kan bruge "not in".. Ellers må man lave noget i stil med: select * from TabelNavn where id < (select top 1 from TabelNavn order by id desc) Jeg mener at "top 1" er Access.. hvis det ikke kan bruges, hedder det vist: select * from TabelNavn = ... Limit 1 Eller noget i den stil :-)
ved mysql skal du bruge limit. select xxx from xxx where xxx = xxx order by xxx asc limit [startpunkt, antal] dvs. hvis du vil have de 10 nyeste id UNDTAGEN den allernyeste vil din sql se således ud. select id from xxxx where xxx = xxx order by xxx asc limit 1, 10;
0xffff> Men du skal huske på, at værdien (i eksemplerne, "10") er variabelt.. Det er derfor jeg bruger en ekstra sql sætning..
thesurfer: Ja ok, den havde jeg ikke lige set. Jeg vil dog anbefale at vælge et antal og holde sig til det. Man har jo også mulighed for bare at lave en limit 1, 99999999999. Den vil sikkert tage alle de rækker med man havde tænkt sig at returnere alligvel :)
Ang "limit 1, 99999999999": Huh? :-) Den skal jo netop ikke tage alle rækker med.. Den skal begrænse til "max - 1"..
altså der kommer til at være mere end 10 nyheder, og den henter pr id. Kan jeg så bare gøre følgene: mysql_query("SELECT * FROM nyheder ORDER BY id ASC LIMIT 1,999999")
thesurfer: limit 1, 99999999999 giver skam også alt undtagen den nyeste :P Ellers ville den hedde limit 0, 99999999999 Kwudo: Du skal nok bruge "order by ID desc" da jeg vil gå ud fra at højeste id er det nyeste ? Hvis du så ordner det desc vil det f.eks give denne række 5 <--- Nyeste 4 3 2 1 Limit 1, 99999999 vil så springe det første resultat over. Nemlig 5 tallet og returnere 4 3 2 1. Som jeg læser det, er det det som du gerne vil have.
altså med limit 1,999999 springer den det nyeste over uanset hvor højt id'et er så længe det der højeste?
11. juni 2007 - 13:31
#10
mysql_query("SELECT * FROM nyheder ORDER BY id DESC LIMIT 1,999999") Vil være den rigtig sql sætning?
11. juni 2007 - 17:30
#11
jeps Limit virker på den måde at første parameter er antallet den skal springe over fra start af dataset. Parameter 2 er antal den skal returnere. Så f.eks. en limit 1,10; vil springe første fundne over og returnere de 10 efter det.
15. juni 2007 - 19:02
#12
okay, fedt :) smid svar (;
24. oktober 2009 - 17:39
#13
svar
Vi tilbyder markedets bedste kurser inden for webudvikling