Avatar billede kimlarsen1978 Nybegynder
29. november 2006 - 19:42 Der er 9 kommentarer og
1 løsning

3 tilfældige blandt de nyeste 10

Hejsa
Hvordan får jeg i MySQL skrevet at den skal tage 3 tilfældige af de nyeste 10 poster fra en tabel?

Lidt dummy kode:
SELECT * FROM artikler WHERE ikkeGodkendt = 0 ORDER BY id LIMIT 0,10 RAND() LIMIT 0,3

???
Avatar billede simplus Nybegynder
29. november 2006 - 19:58 #1
Ehm, hvis du enten har et unikt id eller en dato på de værdier der bliver indsat i databasen kan du jo bare sige

SELECT * FROM artikler WHERE ikkeGodkendt = 0 ORDER BY id DESC LIMIT 0,3 RAND()
Avatar billede kimlarsen1978 Nybegynder
29. november 2006 - 20:05 #2
Hmm, det fejler

MySQL returnerede: 
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'RAND( )
LIMIT 0, 30' at line 1
Avatar billede kimlarsen1978 Nybegynder
29. november 2006 - 20:07 #3
Tror ikke man kan have noget efter LIMIT...

Jeg vil gerne:
Finde 3 tilfælduge poster blandt de 10 nyeste (dem med højst ID)
Avatar billede simplus Nybegynder
29. november 2006 - 20:08 #4
Det er klart, den skal også skrive sådan:
SELECT * FROM artikler WHERE ikkeGodkendt = 0 ORDER BY id DESC RAND() LIMIT 0,3

Ps. ved ikke om det virker når man også skriver id DESC
men hvis man bare skriver ORDER BY RAND() så vil det virke..
Prøv ad
Avatar billede kimlarsen1978 Nybegynder
29. november 2006 - 20:17 #5
Heller ikke

Læs lige spørgsmålet igen:
eg vil gerne:
Finde 3 tilfælduge poster blandt de 10 nyeste (dem med højst ID)

Gentager 3 tilfældige af de NYESTE 10 poster.

Du skriver:
SELECT * FROM artikler WHERE ikkeGodkendt = 0 ORDER BY id DESC RAND() LIMIT 0,3
Det kan man ikke, man kan sige
SELECT * FROM artikler WHERE ikkeGodkendt = 0 ORDER BY RAND() LIMIT 0,3

Men det tager jo bare 3 tilfældige blandt ALLE poster og IKKE kun blandt de NYESTE 10 poster...
Avatar billede simplus Nybegynder
29. november 2006 - 20:24 #6
Denne giver ikke fejl på min lokale server her:

SELECT * FROM artikler WHERE ikkeGodkendt = 0 ORDER BY RAND() DESC LIMIT 0,3
Avatar billede kimlarsen1978 Nybegynder
29. november 2006 - 20:27 #7
Nej den giver heller ikke fejl her, men det er ikke det jeg vil. Den giver jo bare 3 tilfældige poster blandt ALLE poster og IKKE kun blandt de 10 NYESTE poster. Det at du tilføjer DESC efter RAND() sorterer jo blot de 3 tilfældige poster efter ID.

Jeg gentager:
Finde 3 tilfældige poster blandt de 10 nyeste poster, hvilket vil sige blandt de 10 med højst ID.
Avatar billede simplus Nybegynder
29. november 2006 - 20:31 #8
Jeg ved ikke helt hvordan du bruger dine id felter, men den koder virker efter hensigten hos mig. Den udskriver 3 tilfældige poster blandt de 10 nyeste beskeder. Min seneste beskeder har størst id..

Men så må jeg giv op ;-)
- Good luck.
Avatar billede kimlarsen1978 Nybegynder
29. november 2006 - 20:34 #9
Jeg har over 2000 poster og jeg får fx ID 48, 645 og 1025 ud, det er jo ikke ligefrem 3 tilfældige blandt de 10 nyeste som PT er ID 2087 frem til ID 2097
Avatar billede kimlarsen1978 Nybegynder
29. november 2006 - 20:47 #10
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
Computerworld tilbyder specialiserede kurser i database-management

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