Re: Rand() Emulation
| From: | Jason Wong | Date: | Tue, 24 Jun 2003 19:43:21 +0000 |
| Subject: | Re: Rand() Emulation | ||
| References: | 1 2 | Groups: | php.db |
| Request: | Send a blank email to php-db+get-28877@lists.php.net to get a copy of this message | ||
On Wednesday 25 June 2003 00:19, Gerard Samuel wrote:
> Im probably not making myself clear.
> Ultimately, my goal is to emulate mysql's ->
> SELECT * FROM TABLE ORDER BY RAND() LIMIT (X)
>
> for other databases that do not support RAND(). So using variations of
> php's rand(), wouldn't make sense,
> as it only picks one value out of a range of values, that are numerical
> in nature.
>
> But here is an idea, that Im thinking about, but haven't gotten to the
> code as yet.
> 1. In the tables that I want random values from, create a "rand"
> column, that contains incremental numerical values for each row.
> 2. select the the maximum number from the rand column.
> 3. Assume that there are no gaps between 0 and this max number.
> 4. Create an array of numbers with values between 0 and max number.
> 5. Use array_rand() to "randomly" choose (x) values from the array
> created in step 4. (I may choose maybe
> a 1 or 2 values more than whats required, just in case of gaps between 0
> and max number in step 3).
> 6. Use these randomly choosen values to select from the database as
> random rows.
Here's a trick taken from Paul DuBois' MySQL book:
SELECT ..., some_column * 0 + RAND() as rand_col FROM ... ORDER BY rand_col;
I've not tried it myself so YMMV.
--
Jason Wong -> Gremlins Associates -> www.gremlins.biz
Open Source Software Systems Integrators
* Web Design & Hosting * Internet & Intranet Applications Development *
------------------------------------------
Search the list archives before you post
http://marc.theaimsgroup.com/?l=php-db
------------------------------------------