- ベストアンサー
ある特定の複数の列を同じものとして扱いたい(行列の三次元操作?)
データベースについて質問があります。 まず、例えば、下のような表があって、任意のプロジェクト(ここでは「P#」としています)ごとに担当がいるのですが、下のように「担当1」 「担当1」は確実にはいるのですが、「担当2」「担当3」は入る場合もあれば入らない場合もあります。 ここで、「1」「2」などの(添え)数字に関係なくすべてを集計する(Accessで言えば「count」)という操作なのですが、それは可能でしょうか。(これまでは、担当1だけ集計、担当2だけ集計・・・と各列を合計した後、個別に1、2、nを集計していたのですが、これを一気にやりたいのです) また、時にnが「担当9」のように人数が非常に増えてしまう時もあります。 担当9だけのために列を一つ追加しているというのが現状ですが、そうすると、他の行は全部空データとなってしまって容量が増大してしまって非常に無駄だとも思うのですが、これも何かいい方法はないでしょうか。 まとめると、「担当」という大項目を作って、その中に1、2、3、nと数字を割り振って、集計操作がしたいのです。 仮に、これが高度な操作であるとすれば、それができるデータベースソフトを数ヶ月かけて勉強する気もあります。(いろいろとデータベースソフトの概略の本を立ち読みしても、どれがこの操作が可能なのかを書いている本が見あたらなくて、勉強するにしても目処が立たないという状況です) (現在、使っているのはMicrosoft Accessです) [表] |P#|担当1|担当2|担当3|~|担当n| 1 田中 佐藤 池田 2 今井 3 松本 佐藤 4 原田 伊藤 田中 ~ 内田 (←!!!) 5 村上 花田
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No1の方と同様です。Accessで作っているんですよね、作り方がエクセルですよ。 テーブルはPと担当者名の2つ、 フィールドはP#、担当No、担当者名の3つ、 担当者名テーブルには、担当者NOと担当者 Pテーブルには、P#と担当者No、担当者名は担当者テーブルからリレーションで引っ張ってきます。 集計はP#と担当者Noで集計します。 データベースを覚えるのなら、FileMakerをおすすめします。Accessより遙かにかんたんでわかりやすいです。
- 参考URL:
- http://www.filemaker.co.jp/
その他の回答 (2)
- braver_2004
- ベストアンサー率62% (20/32)
DB設計を設計する際に必要な考え方として、 『正規化』 があげられます。 まず、こちらを勉強してみてはいかがでしょうか。 上げれらた例で考えますと、(担当が増えることを想定した場合) ・担当者のみを持つマスタテーブル ・担当名を持つマスタテーブル ・上記二つを関連付けるテーブル を用意する・・・ といった形で設計するとデータがすっきりします。
お礼
お返事ありがとうございます。 正規化についての本は買ったのですが、データ数が増えると(現在5000ほどあります)それぞれの番号をいちいち確認するのが面倒くさいということもあって、このExcel思考に戻ってしまったようです。 やはり、正規化に慣れるしかないのですね。習うより慣れろということで、がんばります。 (別件ですが、メタキャラクタなども使ってみると、意外と使いやすかったりします)
- pbforce
- ベストアンサー率22% (379/1719)
テーブルの形式が表計算ソフトっぽいです。 データベース的には、 P#,担当No,担当者 1,1,田中 1,2,佐藤 1,3,池田 2,1,今井 3,1,松本 3,2,佐藤 と言う形が良いのではないでしょうか?
お礼
Excelは10年ほど使っているためか、 Excel思考からAccess思考への以降というのはなかなかスムーズにいかないものですが、がんばりたいと思います。コメントありがとうございます。
お礼
ソフトのご紹介、ありがとうございます。 たくさんソフトがあると、本当にどれがいいか迷ってしまいます。 Excelも使いやすいのですが、集計に関してはデータベースソフトのほうが上ということに気がついて、こちらに移行したのです。 これからもがんばりたいと思います。