Informix階層型SQLクエリには少し助けが必要です。私は成功し、次のクエリを実行することができています階層内の任意の子を指定すると、INFORMIX階層型SQLで完全ツリーをフェッチします
create table empl_relation (
employee_id char(10),
manager_id char(10));
employee_id | manager_id
5148 null
5149 5148
5150 5149
5151 5148
5152 5151
5154 5148
5155 5154
:
SELECT employee_id, manager_id FROM empl_relation
START WITH employee_id = 5148
CONNECT BY PRIOR employee_id = manager_id
ORDER SIBLINGS BY employee_id;
上記の表で指定された正確な階層を返し、私は次のような構造を持つテーブルがあります。しかし、私はここで何か違うものを達成しようとしています。私は階層内の任意の従業員IDが入力として与えられたときと同じ結果セットを得ることを試みています。たとえば、クエリで、入力employee_idとして5154を指定すると、すべての親とその子、および入力従業員IDの子と孫を取得できるはずです。正確に言えば、上記のクエリを実行することで得たのと同じ結果セットが必要です。
単一のクエリで達成することは可能ですか?はいの場合は、これを達成するのを手伝ってもらえますか?
EDIT
[OK]を、私はこれを達成する1つの方法を考え出しましたが、次のように、それは2つのクエリを実行する必要:
SELECT employee_id, manager_id FROM empl_relation
START WITH employee_id = 5150
CONNECT BY employee_id = PRIOR manager_id
ORDER SIBLINGS BY employee_id ;
返される:
employee_id | manager_id
5148
5149 5148
5150 5149
その後、我々が取得することができますアプリケーション層の親employee_idに結果セットを反復し、次に下のクエリを実行して完全な階層ツリーを取得します:
SELECT employee_id, manager_id FROM empl_relation
START WITH employee_id = 5148
CONNECT BY PRIOR employee_id = manager_id
ORDER SIBLINGS BY employee_id;
これはうまくいきますが、これを1回のクエリで達成できれば本当に素晴らしいことになります。
もっと簡潔な方法があるはずですが、構文エラーが出ていました。よくやった。 –
サンプルデータに対して実際にこのクエリを実行すると、 "-284:サブクエリが正確に1つの行を返しませんでした"というエラーが表示されます。私がちょうどサブクエリを実行するとき、私はエラー "-324:あいまいな列(manager_id)"を得るということがさらに独特です。サブクエリの選択リストに 'manager_id'が含まれている場合、あいまいな列の問題は「消えます」:SELECT employee_id、manager_id FROM empl_relation WHERE manager_id IS NULL START WITH employee_id = 5150 CONNECT BY employee_id = PRIOR manager_id'しかし、メインクエリで直接使用することはできません。テスト:Mac OS X 10.11.5のInformix 12.10.FC6。コメント? –
私はここで何が起こっているのか正確にはわかりません。 '、EMPLOYEE_ID WITH empl_relation 開始からMANAGER_IDをEMPLOYEE_IDを選択= は PRIOR EMPLOYEE_ID = MANAGER_ID BY CONNECT(er.manager_idはEMPLOYEE_ID = PRIOR MANAGER_ID BY EMPLOYEE_ID = 5150 CONNECT WITH START NULL IS empl_relationのER FROM EMPLOYEE_ID 選択します) ORDER BY employee_id; '内側のクエリにテーブルのエイリアスを置くと、あいまいな列の問題がなくなります。もう一度、ここで何が起こっているのか分からない。 – user3244615