- ベストアンサー
Access 複数の行のデータをまとめたい
いつもお世話になっております。 アクセスで部屋の利用状況が把握できるようにデータベースを作成しています。 利用日 | 施設名 | 午前 | 午後| _______________________ 6/24| 会議室 | A社 | _______________________ 6/24| 会議室 | | B社 _______________________ 6/25| 会議室 | C社 | _______________________ 6/25| 会議室 | | C社 の様なテーブルデータを下記のようにまとめたいと考えています。 利用日 | 施設名 | 午前 | 午後| _______________________ 6/24| 会議室 | A社 | B社 _______________________ 6/25| 会議室 | C社 | C社 どのようなすればよいか教えて下さい。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
T1 と t1 は同じものです。紛らわしい書き方ですみません。 (t2 と T2 も同じものです) T2 は仮想的に作ったテーブルです。 ↓だけでしたら 午前の抽出条件に Is Not Null とすれば良いのは分かりますよね 利用日 | 施設名 | 午前 | _________________ 6/24| 会議室 | A社 | _________________ 6/24| 会議室 | | _________________ 6/25| 会議室 | C社 | _________________ 6/25| 会議室 | | ↓こうなる ---A 利用日 | 施設名 | 午前 | _________________ 6/24| 会議室 | A社 | _________________ 6/25| 会議室 | C社 | ↓同様に午後も。---B 利用日 | 施設名 | 午後 | _________________ 6/24| 会議室 | B社 | _________________ 6/25| 会議室 | C社 | で、この二つを横につなぎ合わせればなんとかなりそう。 そこで、午後のほうを、仮想的にT2テーブルとしてあげます。 前回回答のここの部分がそれに相当します。 (select t2.午後 from t1 as t2 where T2.施設名 = t1.施設名 and t2.利用日=t1.利用日 and t2.午後 is not null ) AS 午後 つなぎの条件として、利用日と施設名を使っています。 where T2.施設名 = t1.施設名 and t2.利用日=t1.利用日 として、t2.午後を引っ張ってくれば出来上がり。 分かりづらければ、 ---Aを求めるクエリと、---Bを求めるクエリを作成し、 さらに新たなクエリをもう1個作成してクエリのデザインビューで 結合線を クエリA クエリB 利用日-----利用日 会議室-----会議室 フィールド | 利用日 |施設名 | 午前 | 午後 | テーブル |クエリA |クエリA|クエリA|クエリB| とすれば同じものが得られます。 ただクエリだらけになりかねませんので、徐々に 前回回答の方法(サブクエリ)にも挑戦していってください。
その他の回答 (2)
どのくらい細かいものを考えておられるかにもよりますが、最初に枠を作ってしまうのがらくだと思います。 会議室1というテーブルに日付、午前、午後というフィールドをあらかじめ作っておき予約可能な日付のデータをあらかじめ入れておきます。予約が確定した時点でその日付のデータを変更して社名などを入れるのが構造的に簡単だと思います。
- nicotinism
- ベストアンサー率70% (1019/1452)
こんな感じでは? テーブル名を、T1 と仮定しています。 クエリのSQLビューに貼り付けて、データシートビューで ご確認ください。 SELECT T1.施設名, T1.利用日, T1.午前, (select T2.午後 from t1 as t2 where T2.施設名 = t1.施設名 and t2.利用日=t1.利用日 and t2.午後 is not null ) AS 午後 FROM T1 WHERE (((T1.午前) Is Not Null));
お礼
早速のアドバイスありがとうございます。初歩的なことをお聞きしますが、「t2」は何のテーブルをさしているのでしょうか?また、「T1」と「t1」は別のものをさしているのでしょうか?教えて下さい。