-----Original Message-----
From: pgsql-general-ow...@postgresql.org 
[mailto:pgsql-general-ow...@postgresql.org] On Behalf Of Raymond O'Donnell
Sent: Monday, October 05, 2015 2:40 PM
To: 'PostgreSQL' <pgsql-general@postgresql.org>
Subject: [GENERAL] Selecting pairs of numbers

Hello all,

I have an SQL problem which ought to be simple, but I can't get my head around 
it.

I have pairs of integers - let's call them (x, y). In effect, x is a category, 
while y is an item within that category. For every x, there is always the same 
number of integers y; and both x and y are always numbered sequentially 
starting from 1.

My problem is that I need to select a list of these pairs, ordered first on x 
and then on y, from a given starting point to a given finishing point and 
including all pairs in between.

For example, I might have:

x | y
-----
1 | 1
1 | 2
1 | 3
1 | 4
2 | 1
2 | 2
2 | 3
2 | 4
(etc)

I then might want to extract a list from, say, (1, 3) to (3, 2), giving:

x | y
-----
1 | 3
1 | 4
2 | 1
2 | 2
2 | 3
2 | 4
3 | 1
3 | 2

For the life of me, I can't figure out how to do this. Any help will be 
appreciated, or even just a pointer in the right direction. There's probably 
something simple that I'm just not seeing....

If anyone's interested, these numbers represent channels and pistons on the 
combination system of a largish pipe organ... it's for a hobby project.

Many thanks in advance!

Ray.


____________________________________

SELECT  x, y FROM my_table 
WHERE (x*10 + y) >= (1*10 + 3) AND (x*10 + y) <= (3*10 + 2)
ORDER BY x, y;

Regards,
Igor Neyman


-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Reply via email to