RE: Select by priority
| От | Gary J. Farmer |
|---|---|
| Тема | RE: Select by priority |
| Дата | |
| Msg-id | NDBBKNPOIKAFAGAOPAPNCEMCCBAA.farmer@arlut.utexas.edu обсуждение исходный текст |
| Ответ на | Re: Select by priority (kumar1@home.com (Prasanth A. Kumar)) |
| Список | pgsql-sql |
>> I think the order thing will work though I have no choice of using
>> numbering for the address_type as I am working off a pre-existing
>> database. They are using a mnemonic char type. I am essentially batch
>> downloading and processing this and other database tables for query
>> and presentations using web pages. BTW, does the 'limit' feature exist
>> in Oracle? The main database I am extracting data from is Oracle...
I do not know whether you can add a table associating "priority" with
"address_type". If you can, you might try something like the following
example, using the address_priority table:
create table address_table ( person_id integer, address_type varchar(1), address varchar(50)
);
insert into address_table values ( 1, 'W', 'ROUTE 1, WORK ST');
insert into address_table values ( 2, 'H', 'ROUTE 2, HOME AVE');
insert into address_table values ( 3, 'W', 'ROUTE 3, WORK ST'); insert into address_table values ( 3, 'H', 'ROUTE
3,HOME AVE');
insert into address_table values ( 4, 'M', 'ROUTE 4, MAIL RD');
insert into address_table values ( 5, 'M', 'ROUTE 5, MAIL RD'); insert into address_table values ( 5, 'W', 'ROUTE
5,WORK ST');
insert into address_table values ( 6, 'M', 'ROUTE 6, MAIL RD'); insert into address_table values ( 6, 'H', 'ROUTE
6,HOME AVE');
insert into address_table values ( 7, 'M', 'ROUTE 7, MAIL RD'); insert into address_table values ( 7, 'H', 'ROUTE
7,HOME AVE'); insert into address_table values ( 7, 'W', 'ROUTE 7, WORK ST');
create table address_priority ( address_type varchar(1), priority integer );
insert into address_priority values ( 'M', 1 ); insert into address_priority values ( 'H', 2 ); insert into
address_priorityvalues ( 'W', 3 );
select person_id, address from address_table a, address_priority b where (person_id, priority) in
(selectperson_id, min(priority) from address_table a, address_priority b where a.address_type =
b.address_type group by person_id) and a.address_type = b.address_type;
PERSON_ID ADDRESS ---------- -------------------------------------------------- 1 ROUTE 1, WORK ST
2 ROUTE 2, HOME AVE 3 ROUTE 3, HOME AVE 4 ROUTE 4, MAIL RD 5 ROUTE 5, MAIL RD
6 ROUTE 6, MAIL RD 7 ROUTE 7, MAIL RD
Appears to work with either Oracle or Postgres (though I changed VARCHAR
to VARCHAR2 for Oracle).
Gary Farmer
В списке pgsql-sql по дате отправления: