名前、仕事、都市で識別される人々を含むデータベーステーブルがあります。すべての都市の会社のすべての仕事の階層表現を含む 2 番目のテーブルがあります。
people テーブルに 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
.....
start with
私が抱えている問題は、私の Person テーブルが複合キーであるため、指定した都市の 3 つの仕事のそれぞれから始まるようにクエリの一部を構造化する方法がわからないことです。
必要なものを取得するために 3 つの個別のクエリを実行できますが、これではうまくスケーリングできません。例えば:
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
指定した 3 人を超えるすべてのジョブの個別のリストを取得するには (または、不可能な場合は個別にラップすることもできます)、他にどのようにすればよいでしょうか?