プロが教えるわが家の防犯対策術!

初めまして。Accessを勉強しながらデータベース作成中です。
見様見まねで作っていて、行き詰まってしまったので教えて下さい。

以下のようなデータがテーブル「T試合結果」にあるとします。
-------------------------------------
対戦相手,1試合目日時,1試合目勝敗,1試合目場所,2試合目日時,2試合目勝敗,2試合目場所,3試合目日時,3試合目勝敗,3試合目場所,・・
Aチーム,2005/01/01,勝ち,a会場,2005/02/01,負け,c会場,2005/03/01,引分,b会場,・・
Bチーム,2005/02/01,勝ち,b会場,2005/03/01,負け,d会場,2005/04/01,勝ち,a会場,・・
Cチーム,2005/03/01,引分,c会場,2005/04/01,勝ち,b会場,2005/05/01,勝ち,d会場,・・


-------------------------------------
この「T試合結果」をもとしたクエリ「Q試合結果」から
データを追加していけるよう単票形式でフォーム「F試合結果」を作成しました。
このフォーム上にボタンを2つ置き、クリックで次のような結果を出したいのです。

(1)チームごとの最新対戦結果表示

 対戦相手,日時,勝敗,場所
 Aチーム,2005/**/**,勝ち,a会場
 Bチーム,2005/**/**,負け,b会場
 Cチーム,2005/**/**,引分,c会場
 ・
 ・

(2)日別の勝敗数集計

 日時,勝敗,勝敗数
 2005/01/01,勝ち,1
 2005/01/01,負け,0
 2005/01/01,引分,0
 2005/02/01,勝ち,1
 2005/02/01,負け,1
 2005/02/01,引分,0
 ・
 ・

どうすればよいでしょうか?根本的に何か間違っているかもしれませんが…
マクロやVBAについては、サンプルデータをいじって若干作り変えている程度の素人です。
良い方法がありましたらよろしくお願いいたします。

A 回答 (1件)

>テーブル「T試合結果」


対戦相手,1試合目日時,1試合目勝敗・・
とありますが対戦相手,1試合目日時,1試合目勝敗・・という横にずっと並んだ複数のフィールドなのでしょうか?
テーブルT試合結果は
対戦相手・日時・勝敗・試合場所 の4つのフィールドにした方が入力も集計も簡単に済みます。
各フィールドが横にずっと続くようなテーブルはユニオンクエリを使ったりしないと集計等が出来ません。

>(1)チームごとの最新対戦結果表示
上記で書いた4つのフィールドであれば簡単にやるには2つのクエリを作ればできます。
まず対戦相手と日時の2つのフィールドがあるクエリを作り集計クエリにし対戦相手をグループ化・日付を最大にします。
そのクエリを元にもう一つクエリを作りテーブル追加でT試合結果を追加し集計クエリとT試合結果の対戦相手同士と日付の最大と日付をリレーションで結合しT試合結果の勝敗のフィールドをクエリに追加します。
2つ目に作ったクエリを開けば最新対戦結果を表示出来ます。
複数のフィールドから・・となると
SELECT T試合結果.対戦相手, T試合結果.1試合目日時
FROM T試合結果
UNION SELECT T試合結果.対戦相手, T試合結果.2試合目日時
FROM T試合結果
UNION SELECT T試合結果.対戦相手, T試合結果.3試合目日時
FROM T試合結果
  ・
  ・
;
のように必要フィールド分SQLで記述して試合日時を同一のフィールドに結合してそのユニオンクエリから抽出するようになります。
ユニオンクエリを作るのが大変ならT試合結果のフィールドの変更をお勧めします。

>(2)日別の勝敗数集計
同様に4つのフィールドであれば
クエリを1つ作り集計クエリにし試合日付と勝敗の2つのフィールドを作り日付と勝敗でグループ化し勝敗数というフィールドを作りフィールドに勝敗を指定し集計をカウントにすれば出来ます。
複数ある場合はユニオンクエリを作り元にして同様に集計クエリを作れば出来ます。

T試合結果のフィールドの持ち方を変更した方が良いと思います。データベースとしてのテーブルの概念とちょっと違うと思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>横にずっと並んだ複数のフィールドなのでしょうか?
テーブルT試合結果は対戦相手・日時・勝敗・試合場所の4つのフィールドにした方が入力も集計も簡単に済みます。

実は1チームのデータを1行にまとめる必要があるため、このような構成にしています。
やはり作り方がおかしいのですね…(^^;

>必要フィールド分SQLで記述して試合日時を同一のフィールドに結合してそのユニオンクエリから抽出するようになります。

ユニオンクエリ作ってみました。便利ですね~!
それをもとにしたクエリで集計して、思い通りの結果を出すことができました。感謝です。

お礼日時:2005/11/30 13:38

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