電子書籍の厳選無料作品が豊富!

http://oshiete.nikkeibp.co.jp/kotaeru.php3?q=267 …

会社の組織図を作成したいと考えております。

データベース(PostgreSql)の部門マスタを元に、会社組織図をツリー状に表示したいのです。

データベース構造は
'100';'会社';'101';'経営企画';'';'';'';'';'';''
'100';'会社';'102';'事業統括';'';'';'';'';'';''
'100';'会社';'200';'A本部';'';'';'';'';'';''
'100';'会社';'201';'B本部';'301';'事業管理部';'';'';'';''
'100';'会社';'201';'B本部';'302';'企画部';'';'';'';''
'100';'会社';'201';'B本部';'303';'総務部';'401';'人事課';'';''
'100';'会社';'201';'B本部';'303';'総務部';'402';'総務課';'';''

上記データを下記のイメージにしたいのです。
(見にくいですが・・・)
http://www.geocities.jp/cayanon/sample1.bmp

色々と試してみましたが、
適用できるものがなかったので・・・

よろしくお願いします。

A 回答 (3件)

データベースがPostgreSQLであれば、参考URLにあるconnectbyを


使えば、階層構造をSQL文を1本で取得可能だと思います。

ただし、connectbyは標準では使用できないようなので、
ファンクションの登録が必要なようです。

詳しくは参考URLを見てください。

参考URL:http://www.thinkit.co.jp/cert/marugoto/2/1/23/2. …
    • good
    • 0
この回答へのお礼

ありがとうございます。
とても参考になります。

お礼日時:2007/02/03 02:24

何をアドバイスすればいいのか、この質問からは判断できないのですが?



>データベース構造は

重複する情報が多数あり、テーブルの検索結果のような内容になっていますが?

普通に考えれば、

部門マスタ(部門コード、部門名、上位部門コード)

という構成でいいと思います。
最上位の部門には、「上位部門コード」としてnullを入れれば階層を辿れます。

【最上位のデータ検索】
select * from 部門マスタ
where 部門名=? ←会社名など
and 上位部門コード is null;

2階層目以降は、上位の階層の検索で得た部門コードを利用して検索して行くことになります。

【2階層目以降】
select * from 部門マスタ
where 上位部門コード=? ←上位階層で得た部門コード
order by 部門コード;

SQLを知りたいのか、特定の言語でSQLを発行する方法が知りたいのかといったことが触れられていないので、何を回答すればいいのでしょうか?
    • good
    • 0

データベースの構造がおかしいような気がします。



「部門コード、部門名、すぐ上の部門コード、最上位部門フラグ」

このようになるのではないでしょうか。
あとはプログラムの世界なので、ここでいうのもあれですが、

1階層目:
 最上位部門フラグがtrueのものを取得
 部門名を1階層目として表示
 部門コードを一覧として取得(1)
2階層目:
 (1)で取得した部門コード一覧がすぐ上の部門コードとなる部門を取得
 部門名を2階層目として表示
 部門コードを一覧として取得(2)
3階層目:
 (2)で取得した部門コードがすぐ上の部門コードとなる部門を取得
 部門名を3階層目として表示
  :
  :
 (以下同じ、4階層目・5階層目と続く)
 

この回答への補足

すみません、言葉足らずで・・・


データベース構造は

部門マスタ(部門コード、部門名、上位部門コード)

101,経営企画,null
102,事業統括,null
200,A本部,null
201,B本部,null
301,事業管理部,200
302,企画部,200
303,総務部,200
401,人事課,303
402,総務課,303

だとして、下記ツリーソースにPHPを使って当てはめたい。

Javascriptにてツリー状にするソース


▼<A href="javaScript:tree('b_100')">会社</A><BR>
<DIV id='b_100' style='display:none'>
-<A href='b_101'>経営企画</A><BR>
-<A href='b_102'>事業統括</A><BR>
▼<A href="javaScript:tree('b_201')">A本部</A><BR>
<DIV id='b_201' style='display:none'>
 -<A href='b_301'>事業管理部</A><BR>
 -<A href='b_302'>企画部</A><BR>
 ▼<A href="javaScript:tree('b_303')">総務部</A><BR>
<DIV id='b_303' style='display:none'>
  -<A href='b_401'>総務課</A><BR>
  -<A href='b_402'>人事課</A><BR>
</DIV>
</DIV>
▼<A href="javaScript:tree('b_200')">B本部</A><BR>
</DIV>
<SCRIPT language='JavaScript'>
<!--
function tree(LinkName) {
ls = document.all[LinkName].style;
if(ls.display == 'none') {
ls.display = 'block'
} else {
ls.display = 'none'
}
}
//-->
</SCRIPT>


データベース構造やjavascriptのソースをどのように書けばいいのか

アドバイスをお願いします。

補足日時:2007/01/18 16:21
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す