У меня есть таблица базы данных, в которой люди идентифицируются по имени, работе и городу.У меня есть вторая таблица, которая содержит иерархическое представление каждой работы компании в каждом городе.
Предположим, у меня есть 3 человека в таблице сотрудников:
[name(PK),title,city]
Jim, Salesman, Houston
Jane, Associate Marketer, Chicago
Bill, Cashier, New York
И у меня есть тысячиКомбинации типа работы / местоположения в таблице заданий, примеры которых приведены ниже.Вы можете видеть иерархические отношения, так как parent_title является внешним ключом для заголовка:
[title,city,pay,parent_title]
Salesman, Houston, $50000, CEO
Cashier, Houston, $25000
CEO, USA, $1000000
Associate Marketer, Chicago, $75000
Senior Marketer, Chicago, $125000
.....
Проблема, с которой я столкнулся, состоит в том, что моя таблица Person является составным ключом, поэтому я не знаю, как структурировать часть start with
моего запроса так, чтобы она начиналась с каждого из трех заданий в указанных мною городах.
Я могу выполнить три отдельных запроса, чтобы получить то, что яхочу, но это плохо масштабируется.Например:
select * from jobs
start with city = (select city from people where name = 'Bill') and title = (select title from people where name = 'Bill')
connect by prior parent_title = title
UNION
select * from jobs
start with city = (select city from people where name = 'Jim') and title = (select title from people where name = 'Jim')
connect by prior parent_title = title
UNION
select * from jobs
start with city = (select city from people where name = 'Jane') and title = (select title from people where name = 'Jane')
connect by prior parent_title = title
Как еще я могу получить отдельный список (или я мог бы обернуть его другим, если не возможно) отдельным списком всех работ, которые выше трех указанных мной людей?