|
durrani
Starting Member
1 Post |
Posted - 2010-04-13 : 07:46:59
|
| Here are the two tables:CREATE TABLE master ( masterid BIGINT NOT NULL, name VARCHAR(25), CONSTRAINT PK_master PRIMARY KEY (masterid));commit;CREATE TABLE detail ( masterid BIGINT NOT NULL, rangestart BIGINT, rangeend BIGINT, CONSTRAINT FK_detail_master FOREIGN KEY (masterid) REFERENCES master (masterid));commit;INSERT INTO master(masterid, name) values(1, 'master1');INSERT INTO master(masterid, name) values(2, 'master2');INSERT INTO master(masterid, name) values(3, 'master3');commit;insert into detail(masterid, rangestart, rangeend) values(1,100, 200);insert into detail(masterid, rangestart, rangeend) values(1,250,300);insert into detail(masterid, rangestart, rangeend) values(1,350,400);insert into detail(masterid, rangestart, rangeend) values(2,100,200);insert into detail(masterid, rangestart, rangeend) values(2,320,350);insert into detail(masterid, rangestart, rangeend) values(2,390,400);insert into detail(masterid, rangestart, rangeend) values(3,100,200);insert into detail(masterid, rangestart, rangeend) values(3,250,300);insert into detail(masterid, rangestart, rangeend) values(3,355,455);commit;Input values is an array containing values: case a: 120 For this input all three masterid should be returned, since 120 falls in range of all the three master ids. case b: 120 260 For this input masterid 1 and 3 should be returned, since 260 does not fall in the ranges of masterid 2, that should not be returned. case c: 110 260 350 In this case the query should return masterid 1 only.I need to write this in a single query. Yes, I will be constructing the query programmatically.Thanks & RegardsMohammed A Durrani |
|