Srecna Nova godina :-)
Ovo nije pitanje, nego hocu da podelim jedno interesantno resenje sa kolegama.
Ima jedan Microsoft forum, gde ljudi pitaju pitanja iz svih mogucih oblasti. Forum je
http://communities.microsoft.com/newsgroups/default.asp
Na oblasti Access Queries bilo je pitanje "Kako napraviti kveri koji vraca slucajni uzorak". Pitanje se pojavljivalo i ranije kojekuda ali nikad odgovor nije bio elegantan kao ovaj:
'Ako je CustomerID pozitivan jedinstveni broj (kao autonumber na primer) onda
SELECT TOP 5 PERCENT Customers.*
FROM Customers
ORDER BY Rnd([CustomerID]);
Ako ne postoji numericki jedinstveni kljuc, moze i ovako:
SELECT TOP 5 PERCENT Customers.*
FROM Customers
ORDER BY Rnd(1 + Len([CompanyName] & ""));
Rnd() zahteva argument koji je >=0 i ne moze biti NULL.
I to je to. Access prvo sortira ceo set po zadatom pravilu i onda odvoji TOP X%.
Moguce je da neki drugi dijalekti prvo vrate TOP X% pa tek onda sortiraju. U tom slucaju prikazani metod za randomizaciju ne bi vazio. Cini mi se da Oracle radi na ovaj drugi nacin, ali nisam siguran. Microsoft SQL pak nema Rnd() funkciju pa nisam siguran da li bi ovo radilo u MS SQL. Ako neko zna kako - podelite trik sa narodom.
:-)
[
Ovu poruku je menjao degojs dana 06.01.2004. u 16:53 GMT]