[ NenadS @ 27.08.2006. 15:30 ] @
Treba mi sledeci SQL upit.

U bazi imam polje poster koje ima vrednosti 1, 2, 3, 4 i tako dalje... to je kao user_id.

Trebam da selektujem 3 polja gde ce poster biti recimo 1, 4 ili 5 ali da mi ne prikaze od poster 1 sva 3 polja, nego da uvek izmesa da u ta 3 bude 1, 4 ili 5 i to sve da bude RAND(), posto poster 1 ima npr. 300 upisa... pa da se svaki put prikaze jedan od 300, a tako i za ostala 2.

Nadam se da cete razumeti sta sam sada pokusao da objasnim :)

Ja sam probao nesto ovako ali nije dobro jer rekto kada od ta 3 rezultata koje dobijem poster ima razlicite vrednosti... skoro uvek se pojavi samo 1 koji ima najvise upisa...

Code:
SELECT * FROM table_posts WHERE poster IN (1, 4, 5) ORDER BY RAND(UNIX_TIMESTAMP()) LIMIT 3;


Zna li neko kako to da napisem?

Hvala unapred.
[ mb_sa @ 27.08.2006. 18:47 ] @
Nisam siguran da li ce uplati u ovom slucaju, ali probaj sa:

Code:
SELECT DISTINCT * FROM table_posts WHERE poster IN (1, 4, 5) ORDER BY RAND(UNIX_TIMESTAMP()) LIMIT 3;
[ NenadS @ 27.08.2006. 20:49 ] @
Nece, ne primecujem nikakvu razliku... desi se da selektuje 2 ista usera, cak i sva 3 ista koja imaju najvise poruka... a to nije dobro :(

p.s.

DISTINCT radi lepo samo u slucaju kada navedem jedno polje koje ce da selektuje, recimo poster, u tom slucaju dobijam 3 razlicita ali meni trebaju i ostali podaci...

Mozda kada bih uradio JOIN ali ne mislim da to ne bi pomoglo jer na osnovu imena ne mogu da dobijem ostale podatke jer se ime spominje mnogo puta...

I dalje trezim pravo resenje...
[ NenadS @ 28.08.2006. 11:32 ] @
Posto nista nisam uspeo da nadjem, bio sam prinudjen da to uradim na drugi nacin...

Stavio sam u array usere cije poruke zelim da mi prikazuje, a zatim sam u for petlju ubacio sa vrti onoliko puta koliko sam usera uneo u niz i da mi za svakog od njih prikaze po jednu random poruku... a useri se u nizu tj. iz njega prikazuju isto random, tako da mi ovo zavrsava posao ali ne svidja mi se to sto sada imam za 3 usera, 3 SQL upita...