![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
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
色々と試してみましたが、
適用できるものがなかったので・・・
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
データベースがPostgreSQLであれば、参考URLにあるconnectbyを
使えば、階層構造をSQL文を1本で取得可能だと思います。
ただし、connectbyは標準では使用できないようなので、
ファンクションの登録が必要なようです。
詳しくは参考URLを見てください。
参考URL:http://www.thinkit.co.jp/cert/marugoto/2/1/23/2. …
No.2
- 回答日時:
何をアドバイスすればいいのか、この質問からは判断できないのですが?
>データベース構造は
重複する情報が多数あり、テーブルの検索結果のような内容になっていますが?
普通に考えれば、
部門マスタ(部門コード、部門名、上位部門コード)
という構成でいいと思います。
最上位の部門には、「上位部門コード」としてnullを入れれば階層を辿れます。
【最上位のデータ検索】
select * from 部門マスタ
where 部門名=? ←会社名など
and 上位部門コード is null;
2階層目以降は、上位の階層の検索で得た部門コードを利用して検索して行くことになります。
【2階層目以降】
select * from 部門マスタ
where 上位部門コード=? ←上位階層で得た部門コード
order by 部門コード;
SQLを知りたいのか、特定の言語でSQLを発行する方法が知りたいのかといったことが触れられていないので、何を回答すればいいのでしょうか?
No.1
- 回答日時:
データベースの構造がおかしいような気がします。
「部門コード、部門名、すぐ上の部門コード、最上位部門フラグ」
このようになるのではないでしょうか。
あとはプログラムの世界なので、ここでいうのもあれですが、
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のソースをどのように書けばいいのか
アドバイスをお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 分譲マンション 皆さんの管理組合では)共用部分の修繕工事業者の選定は→どう選定されておられますか? ①管理会社へ丸投 3 2022/10/06 22:07
- 会社経営 会社の経営企画室とかは社長直下のところが多いですよね? 役所だと企画課は総務部所属のところが多いです 2 2023/06/14 12:16
- 分譲マンション 皆さんのマンションの第2回目・長期修繕計画書見直では)管理会社への作成依頼は→無償作成か?有償作成か 1 2022/08/21 18:44
- その他(税金) 消費税脱税疑惑、労働基準法、コロナ給付金3点について 3 2022/03/29 12:06
- 転職 人事部で採用業務などに従事するのと、 人材会社で営業やるのだったらどちらの方が辛いですか? 今人材会 3 2022/04/11 19:47
- 教師・教員 25歳の息子ですが教員採用事件合格しましたが辞退して外国の出張が多い会社に入社してしまいました 中小 3 2022/03/28 21:07
- 中途・キャリア 携帯販売の志望動機です。 私は4年と3ヶ月間●●株式会社で製造課という部署に勤めておりました。どうし 5 2023/01/16 18:27
- 人事・法務・広報 就業規則・36協定の届について 1 2023/02/07 14:32
- 事務・総務 社会人5年目の男性です。 住宅リフォームの現場監督をしております。 会社で急な組織変更はあり得るので 1 2022/10/23 22:37
- 高齢者・シニア 60歳を超えた男性の就職事情を教えてください。 私は50代後半、定年までカウントダウンに入った男性で 5 2022/07/23 23:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SELECTした結果をSELECTしたい!
-
フラグをたてるってどういうこ...
-
【SQL】他テーブルに含まれる値...
-
sqlに記述できない文字
-
エラーを起こす方法
-
Accessで今日から5日後
-
ACCESSにおいてスキーマとは
-
テーブル名が可変の場合のクエ...
-
SELECT INTOで一度に複数の変数...
-
truncate tableを使って複数の...
-
timestampのデータはどのように...
-
テーブル定義書(Oracle) 【IX】...
-
UPDATEで既存のレコードに文字...
-
SQL*LOADER実行時のロードデー...
-
既存データをINSERT文にして出...
-
SQLでつまづいてます。
-
次の時間帯の勝率の合計を求め...
-
ACCESSのVBAにてExcelに行...
-
こちらのテーブルにあってこち...
-
SELECTした結果に行番号を求めたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SELECTした結果をSELECTしたい!
-
Accessで最新のレコード...
-
RowIDの取り方
-
データベースと連動したツリー表示
-
SQLについて教えてください
-
年、月、日を取得する関数
-
SQL Server 2000 を使用してい...
-
pl/pgsqlで再帰呼び出しは可能...
-
SQL結果に序列を付けるには??
-
複数のテーブル結合
-
【SQL】他テーブルに含まれる値...
-
SELECT INTOで一度に複数の変数...
-
フラグをたてるってどういうこ...
-
sqlに記述できない文字
-
Accessで今日から5日後
-
UPDATEで既存のレコードに文字...
-
truncate tableを使って複数の...
-
timestampのデータはどのように...
-
オラクルのUPDATEで複数テーブル
-
既存データをINSERT文にして出...
おすすめ情報