これが非常に単純な要求であることを願っています...私は開発者でもDBAでもありませんが、Perl、PHP、およびPowerShellに手を出しました。とにかく、約400名の親子のテーブルがあります。表のスニペットは、この投稿の下部にあります。完全な深さが必要な場合は、412 の親/子の全リストを提供できます。
SOURCE_ID と DESTINATION_ID は、SOA 環境での Web サービスを表しています。この演習では、サービスの 1 つを選択し、階層内でその下にある「下流」の子を表示するだけです。また、階層のずっと上にある「上流」の親も知りたいです。
私はもともとテーブルをテキスト ファイルにカット アンド ペーストし、このPERL スクリプトを使用して階層ファイルを作成し、それを Excel に貼り付けました。簡単に言えば、SOURCE_ID のすべての子であると想定 した 25 の一意の ID を思いつきました。
これを SQL クエリで実行したいので、対話型/セルフサービスの Web ページを作成でき、手動のプロセスを心配する必要がありません。このサイトのどこかからこのコードを見つけて操作しました。
select Source_Service_Id parent, Destination_Service_Id child
from dd_service_relationship
connect by prior id = Source_Service_Id
start with Source_Service_Id = 10512
12 件の結果のみが返されます。今、私はどの結果を信頼すべきかわかりません。
SQL コードがすべての子を返し (子が複数の親の下にある場合は重複なし)、テーブル全体をトラバースすることを確認してください。
dd_service_relationship テーブルの一部を次に示します。
ID UPDATE_DATE SOURCE_ID DESTINATION_ID
10502 9/24/2012 2:09:45 PM 10501 10500
10504 9/24/2012 2:09:45 PM 10501 10503
10506 9/24/2012 2:09:45 PM 10501 10505
10509 9/24/2012 2:09:45 PM 10508 10507
10511 9/24/2012 2:09:45 PM 10508 10510
10513 9/24/2012 2:09:45 PM 10508 10512
10515 9/24/2012 2:09:45 PM 10508 10514
10517 9/24/2012 2:09:45 PM 10508 10516
10519 9/24/2012 2:09:45 PM 10508 10518
10521 9/24/2012 2:09:45 PM 10508 10520
10523 9/24/2012 2:09:45 PM 10508 10522
10526 9/24/2012 2:09:45 PM 10525 10524
10527 9/24/2012 2:09:45 PM 10525 10505
10529 9/24/2012 2:09:45 PM 10525 10528
10531 9/24/2012 2:09:45 PM 10525 10530
10533 9/24/2012 2:09:45 PM 10532 10505
10534 9/24/2012 2:09:45 PM 10532 10507
10535 9/24/2012 2:09:45 PM 10532 10510
10536 9/24/2012 2:09:45 PM 10532 10512
10538 9/24/2012 2:09:45 PM 10532 10537
10541 9/24/2012 2:09:45 PM 10540 10539
10543 9/24/2012 2:09:45 PM 10542 10514
10544 9/24/2012 2:09:45 PM 10542 10539
10545 9/24/2012 2:09:45 PM 10542 10505
10547 9/24/2012 2:09:45 PM 10546 10518
10549 9/24/2012 2:09:45 PM 10546 10548
ありがとうございました...