Avatar billede kimlarsen1978 Nybegynder
12. august 2006 - 23:44 Der er 11 kommentarer og
1 løsning

MySQL: WHERE kolonne IN (

Hejsa
Denne SQL vil MySQL ikke tage, den siger at IN ikke er suporteret. Hvordan kan det ellers gøres?

Jeg vil vælge en tilfældig af de først 10 rækker i tabbellen:

************************************
Select * From artikler where id in (Select a1.id From artikler AS a1 where a1.ikkeGodkendt = 0 ORDER BY a1.id desc LIMIT 0, 10) ORDER BY RAND() LIMIT 0, 1
************************************
Avatar billede arne_v Ekspert
13. august 2006 - 00:03 #1
hvilken MySQL version ?

WHERE IN SELECT kræver 4.1 eller 5.0
Avatar billede kimlarsen1978 Nybegynder
13. august 2006 - 00:18 #2
MySQL - 4.1.21 - standard
phpMyAdmin - 2.8.2.1
MySQL klientversion: 4.1.21
Avatar billede arne_v Ekspert
13. august 2006 - 00:24 #3
hvad er den præcise fejl tekst ?
Avatar billede kimlarsen1978 Nybegynder
13. august 2006 - 00:31 #4
SQL-forespørgsel: 

SELECT *
FROM artikler
WHERE id
IN (


SELECT a1.id
FROM artikler AS a1
WHERE a1.ikkeGodkendt =0
ORDER BY a1.id DESC
LIMIT 0 , 10
)
ORDER BY RAND( )
LIMIT 0 , 1

MySQL returnerede: 

#1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
Avatar billede kimlarsen1978 Nybegynder
13. august 2006 - 00:43 #5
Så hvordan dælen gør jeg så for at få en tilfældig række fra de 10 nyeste?
Avatar billede arne_v Ekspert
13. august 2006 - 01:16 #6
jeg kan ikke lige se nogen god løsning for ren SQL

men jeg kan se en løsning for en applikation f.eks. ASP

n = fix(rnd()*10)
sql = "SELECT * FROM artikler WHERE ikkeGodkendt = 0 ORDER BY id DESC LIMIT " & n & ",1"
Avatar billede kimlarsen1978 Nybegynder
13. august 2006 - 01:30 #7
hmmm, det virker nogenlunde, men den returnere ofte den samme
Avatar billede arne_v Ekspert
13. august 2006 - 03:07 #8
husker du kun at kalde randomize en gang ?
Avatar billede kimlarsen1978 Nybegynder
13. august 2006 - 09:27 #9
hvad mener du?
Avatar billede kimlarsen1978 Nybegynder
13. august 2006 - 11:15 #10
Så var den der:

randomize
n = fix(rnd()*10)
strSQL = "SELECT * FROM artikler WHERE ikkeGodkendt = 0 ORDER BY id DESC LIMIT " & n & ",1"

Så kommer der forskellige hver gang.

Tak for din hjælp.

Svar?
Avatar billede arne_v Ekspert
13. august 2006 - 15:53 #11
kommer her
Avatar billede kimlarsen1978 Nybegynder
13. august 2006 - 16:09 #12
Go søndag
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