a. start with this sql:
select *
from product p left outer join location l on (INSTR(p.zone, l.zone)>0)
order by p.pickperday desc, l.distance asc;
b. write a stored procedure where you
- create a hashset
- start loop over resultset
- take current element and if it is not allready in hashset and location is also not allready in hashset insert it into hashset
- return hashsetlist
how to wirte such procedures: http://docs.oracle.com/cd/B28359_01/java.111/b31225/cheight.htm#CHDCDHJD
for testing:
CREATE TABLE "PRODUCT" ( "PRODUCT" VARCHAR2(20), "ZONE" VARCHAR2(20), "PICKPERDAY" VARCHAR2(20));
CREATE TABLE "LOCATION" ( "LOCATION" VARCHAR2(20), "ZONE" VARCHAR2(20), "DISTANCE" VARCHAR2(20));
Insert into LOCATION (LOCATION,ZONE,DISTANCE) values ('A1','A','1');
Insert into LOCATION (LOCATION,ZONE,DISTANCE) values ('B1','B','2');
Insert into LOCATION (LOCATION,ZONE,DISTANCE) values ('A3','A','5');
Insert into LOCATION (LOCATION,ZONE,DISTANCE) values ('B2','B','4');
Insert into LOCATION (LOCATION,ZONE,DISTANCE) values ('A2','A','3');
Insert into LOCATION (LOCATION,ZONE,DISTANCE) values ('B3','B','6');
Insert into LOCATION (LOCATION,ZONE,DISTANCE) values ('B4','B','8');
Insert into LOCATION (LOCATION,ZONE,DISTANCE) values ('A4','B','2');
Insert into PRODUCT (PRODUCT,ZONE,PICKPERDAY) values ('Milk','A','8');
Insert into PRODUCT (PRODUCT,ZONE,PICKPERDAY) values ('Tomatos','A/B','4');
Insert into PRODUCT (PRODUCT,ZONE,PICKPERDAY) values ('Bread','B','6');
Insert into PRODUCT (PRODUCT,ZONE,PICKPERDAY) values ('Dry Pasta','B','3');
Insert into PRODUCT (PRODUCT,ZONE,PICKPERDAY) values ('Lettuce','A/B','7');
Insert into PRODUCT (PRODUCT,ZONE,PICKPERDAY) values ('Beef','A','2');
Insert into PRODUCT (PRODUCT,ZONE,PICKPERDAY) values ('Chocolate','B','5');
Insert into PRODUCT (PRODUCT,ZONE,PICKPERDAY) values ('Chicken','A','1');