<クエリーを作成する>
Excel で分析をしたい場合,クエリーでレコードセットを取り出すのが一番簡単です。
例えば,1着・2着の騎手をレースごとにレコードにしたものが欲しいとします。 その場合,関係するテーブルは,Race と RaceUma テーブルになります。
1. 以下のように新規にクエリーを作成します。
2. すると,テーブルの表示ダイアログが現れます。
最初に,利用するテーブルとそのリレーションショップを設定します。
追加したいテーブルを選択して,追加ボタンを押して追加します。 この例では,Raceテーブルを追加します。
3. Raceテーブルが追加されました。 例えば,出目のようなものの場合は,Raceテーブルの情報だけで十分なので,テーブルの設定はこれで終了になります。
騎手名は,RaceUmaテーブルに入っているので,RaceUmaも追加します。
5. すると,以下のように,
Raceテーブルの RaceID と RaceUmaテーブルの RaceID の間にリレーションシップ
が自動的に設定されます。これは,JvsfAc33.mdb 自体があらかじめリレーションシップ設定しているためです。 この関係は,一対多の関係にあります。つまり,1レースの情報に対して,馬番ごとの情報が複数存在することを意味します。
ふつうは,このような一対多の関係でレコードセットを求めることが多いです。ただし,この場合,レコード数は,多側のテーブル (RaceUma) のレコード数になります。つまり,馬番の数だけレコードが作成されます。 馬出走録サブのレコードソースは,このリレーションのSQL文になっています。
[重要]
一対多の関係にある時,一側が主導権を握っているような感じですが,実際には,多側のテーブルの方に主導権があります。(この場合は,RaceUmaテーブルになります。)
例えば,そのSQL文にフィルタをかける場合,多側のテーブル
(RaceUma) のフィールドで絞込みを行った方が,実行速度がかなり速くなります。
このため,つくれますでは,Race側のフィールドで絞込みに良く使われる可能性のあるものは,RaceUmaテーブルにも含めています。
ただし,この場合,1着の騎手と2着の騎手が別のレコードになってしまいます。今回は,一対多の関係になっては困るので,このリレーションは削除します。
リレーションの線の真中あたりを右クリックします。
6. すると,リレーションを削除できるので,削除します。
Raceテーブルの方をスクロールして,確定1 というフィールドを探します。
7. Raceテーブルの 確定1フィールドからRaceUmaのRaceUmaIDフィールドへドラッグします。
[重要] このとき,必ずRaceテーブル側からドラッグしてください。(一対多の関係のテーブル間にリレーションを設定する場合,必ず一側からドラッグします。反対からドラッグした場合,実行速度に差が出ます。)
8. すると,以下のようにリレーションが設定されます。
RaceUmaID とは,RaceID と 馬番 をあわせたものです。RaceUmaテーブルの主キーになっています。
確定1 は,確定順位が1着だった馬の馬番の前にRaceID をつけたものです。実質的に RaceUmaID と同じ長さのものになっています。
(なお,確定2,確定3 も同様です。入線1,入線2,入線3 は,入線順位を元に設定しています。)
もうご想像の通り,この2つを結ぶことによって,1レースに対して,1着馬のレコードが入っているもののみをRaceUmaテーブルから関係するようにしています。
RaceUmaテーブルを別の名前にするために以下のように,テーブルのタイトルを右クリックします。
9. プロパティを開きます。
10. プロパティシートに別名という欄があるので,例えば,Uma1 とします。なお,短い名前にしてください。
11. 閉じます。
12. RaceUmaテーブルが Uma1テーブルのように変更になっています。 実際のテーブルの名前は変更されないので安心してください。 空いているところを右クリックしてください。
13. テーブルの表示をクリックします。
14. 再び,テーブルの表示ダイアログが現れるので,RaceUmaテーブルを追加します。
15. 以下のように追加されます。 また,同様にリレーションを削除します。
16. 今度は,確定2フィールドとRaceUmaIDフィールドを関係付けます。
[重要] このとき,必ずRaceテーブル側からドラッグしてください。(一対多の関係のテーブル間にリレーションを設定する場合,必ず一側からドラッグします。反対からドラッグした場合,実行速度に差が出ます。)
17. リレーションが設定されたら,同じようにテーブル名を変更します。
18. 以下のようにテーブル情報の設定は,無事完了しました。 後は,Accessの解説本によく載っているように,フィールドをドラッグして,抽出条件や並び替えを設定すればOKです。
※ Accessの解説本には載っていない内緒のテクニックなので内緒にしてね。
[補足] レースタイムやレースタイム入線の各フォームのレコードソースでは,確定3 や 入線3 と関係付けるために,さらにRaceUmaテーブルを追加しています。
[補足] 1着同着の場合,馬番の小さい方から,確定1 確定2 の順に入っています。確定4,確定5,入線4,入線5 は,3着に同着があった場合設定しています。これは,成績ファイルを組込む時に自動的に行っています。