【完全保存版】馬王ZのSQLの基本【競馬ソフト】

【完全保存版】馬王ZのSQLの基本【競馬ソフト】

馬王ZのSQLの基本まとめ

馬王ZのSQLの基本について、初心者向けにまとめました。

少しでも参考になれば幸いです。

SELECT文の基本

SQL
SELECT フィールド名1,フィールド名2...
FROM テーブル名
WHERE 条件式
ORDER BY 順序を表す式
ポイント

  • フィールド名を指定しない場合、フィールド名のところに「*」と書く

現役騎手をすべて表示して、若い順にソートする

SQL
SELECT 騎手名,生年月日
FROM 騎手マスタ
WHERE 騎手東西所属コード < 3 AND 騎手抹消区分 = 0
ORDER BY 生年月日 DESC

馬王Z SQLの基本1

ポイント

  • WHEREはANDで複数条件を繋げれます
  • ORDER BY DESC:大きい値⇒小さい値
  • ORDER BY ASC:小さい値⇒大きい値

複数テーブルの結合

出走馬テーブルと騎手マスタテーブルを結合させる

SQL
SELECT 馬番,馬名, 騎手マスタ.騎手名, 生年月日
FROM 出走馬T LEFT JOIN 騎手マスタ
ON 出走馬T.騎手コード = 騎手マスタ.騎手コード
WHERE 競走コード = 22012270611
ORDER BY 馬番 ASC

馬王Z SQLの基本2

ポイント

  • ON:テーブルの結合条件
  • 両方のテーブルに同名のフィールドがある場合、どちらのテーブルのフィールドデータを使うか指定する必要がある
  • LEFT JOINは左側に書いたテーブルが優先される。(つまり騎手テーブルの内容が空でも表示される)
  • INNER JOINの場合、両方のテーブルにデータが存在する場合だけ結合される

レースT、出走馬T、騎手マスタを結合させる

SQL
SELECT 馬番,出走馬T.馬名, 騎手マスタ.騎手名, 騎手マスタ.生年月日, 繁殖馬名1
FROM ((レースT INNER JOIN 出走馬T
  ON レースT.競走コード = 出走馬T.競走コード)
  LEFT JOIN 競走馬マスタ
    ON 出走馬T.血統登録番号 = 競走馬マスタ.血統登録番号)
      LEFT JOIN 騎手マスタ
        ON 出走馬T.騎手コード = 騎手マスタ.騎手コード
WHERE レースT.競走コード = 22012270611
ORDER BY 馬番 ASC

馬王Z SQLの基本3

集計クエリー

競馬場毎の平均出走頭数を求める

SQL
SELECT 場名, Avg(頭数)
FROM レースT
WHERE 場コード <= 10 AND 月日 Between #2016/1/1# AND #2020/12/31#
GROUP BY 場名

馬王Z SQLの基本4

ポイント

  • GROUP BY でグループ分けを行う。
  • Between演算子で範囲を指定する
  • 日付は #2020/1/5# のような形式で指定する

その他、よく使われる演算子

どれかと一致するかを判定する In演算子

SQL
SELECT 年月日,場名,馬名
FROM レースT INNER JOIN 出走馬T
  ON レースT.競走コード = 出走馬T.競走コード
WHERE 馬名 = "クロノジェネシス"
  AND 場コード In (05, 06)
  AND 年月日 Between #2019/01/1# And #2020/12/31#

馬王Z SQLの基本5

ポイント

  • 場コード In (05, 06)で、東京か中山に限定している

文字のあいまいな比較をする Like演算子

SQL
SELECT 馬名
FROM 競走馬マスタ
WHERE 馬名 Like "ディープ%"

馬王Z SQLの基本6

ポイント

  • 馬名 Like "ディープ%":先頭に"ディープ"の文字が入っている場合
  • 馬名 Like "%ディープ%":最後に"ディープ"の文字が入っている場合
  • 馬名 Like "%ディープ%":どこかに"ディープ"の文字が入っている場合

以上で、馬王ZのSQLの基本をまとめました。

初心者向けの初歩的な内容ばかりとなっておりますので、馬王で競馬で勝つゾという方は、是非SQLの専門書をお読みください。

SQLの入りとして少しでも参考になれば幸いです。

それでは素敵な競馬ライフをお送りください。