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 hashset
- start a set of results
- take the current element and if it is not hasready in hashset and the location is also not allready in hashset insert it in hashset
- return hashsetlist
how to perform 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');