Thanks for the idea,

Unfortunately I can't do that as the ranges involved are unknown and
will be from 1 to several billion at lease.  I can't have another table
that needs to be augmented each time my ranges change.

Any other ideas?

Cheers,

Andrew

 

-----Original Message-----
From: Paul B van den Berg [mailto:[EMAIL PROTECTED] 
Sent: Thu 14 April 2005 10:47
To: MySQL
Cc: Andrew Braithwaite
Subject: Help with a tricky/impossible query...

Hi,

In SQL you need to define the data that you want to work with:

create table z ( z int(5) not null primary key); insert into z values
(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14),(15),(16),(
17),(18),(19),(20),(21),(22);

If you need more values you could use a simple perl looping construct:

for ($i=0; $i <= $max; $i++) {
         $dbh->do( q{  insert into z set z = $i });
        }

Once you have the table filled, it's easy to explode the x/y ranges by
seq:
 
select seq, z
from wibble, z
where z between x and y

Then the rows with seq=1 are:
| seq | z  |
+-----+----+
|   1 |  5 |
|   1 |  6 |
|   1 |  7 |
|   1 |  8 |
|   1 |  9 |
|   1 | 10 |
The rest is as you wanted.

Regards, Paul 

On 14/4/05 1:11 am, "Andrew Braithwaite" <[EMAIL PROTECTED]> wrote:

> Here's what I need to do...
> 
> create table wibble(
> seq int(3) auto_increment primary key, x int(5), y int(5) );
> 
> insert into wibble set x=5, y=10;
> insert into wibble set x=1, y=3;
> insert into wibble set x=17, y=22;
> 
> mysql> select * from wibble;
> +-----+------+------+
> | seq | x    | y    |
> +-----+------+------+
> |   1 |    5 |   10 |
> |   2 |    1 |    3 |
> |   3 |   17 |   22 |
> +-----+------+------+
> 3 rows in set (0.09 sec)
> 
> So I want to run a query to explode the x/y ranges by seq.
> 
> The required output is:
> 
> mysql> select some clever things from wibble where some clever stuff 
> mysql> happens
> here;
> +-----+------+
> | seq | z    |
> +-----+------+
> |   1 |    1 |
> |   1 |    2 |
> |   1 |    3 |
> |   1 |    4 |
> |   1 |    5 |
> |   2 |    1 |
> |   2 |    2 |
> |   2 |    3 |
> |   3 |   17 |
> |   3 |   18 |
> |   3 |   19 |
> |   3 |   20 |
> |   3 |   21 |
> |   3 |   22 |
> +-----+------+
> 14 rows in set (0.17 sec)
> 
> Can anyone help me to achieve this result?
> 



--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to