<クエリーを作成する>

Excel で分析をしたい場合,クエリーでレコードセットを取り出すのが一番簡単です。

例えば,1着・2着の騎手をレースごとにレコードにしたものが欲しいとします。 その場合,関係するテーブルは,RaceRaceUma テーブルになります。

 

1. 以下のように新規にクエリーを作成します。

2. すると,テーブルの表示ダイアログが現れます。

最初に,利用するテーブルとそのリレーションショップを設定します。

追加したいテーブルを選択して,追加ボタンを押して追加します。 この例では,Raceテーブルを追加します。

3. Raceテーブルが追加されました。 例えば,出目のようなものの場合は,Raceテーブルの情報だけで十分なので,テーブルの設定はこれで終了になります。

騎手名は,RaceUmaテーブルに入っているので,RaceUmaも追加します。

5. すると,以下のように,

Raceテーブルの RaceIDRaceUmaテーブルの 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着に同着があった場合設定しています。これは,成績ファイルを組込む時に自動的に行っています。