出馬表を作ってGUIツールとMySQLの2つを一気に理解しよう!

シェアしていただけると励みになります!

リレーションデータベースの画像

私はGUIツールは勿論、データベースもプログラムも、いまだに初心者です。無論プログラムなどはコピペプログラマーですので、人に何か教えれる立場にないことも理解しています。しかし、この記事をご覧になっている馬券師の方も私と同じように競馬ソフトを作成してみたいという初心者の方が居るかも知れません。私も壁に当たりましたが、初心者が競馬ソフトを作成するのには壁があるように思います。正しい伝え方なのかは自信がありませんが、「データベースがあっても何をすればいいか分からない。」という方のお力になれればという思いで、恐れずこの記事を書くことにしました。不備などあればご指摘いただけると嬉しいです。

さて、初心者が競馬ソフトを作成するには次のような壁があります。

  • GUIツールの使い方を勉強する
  • そもそもリレーショナルデータベースって何?
  • MySQLのルールや関数、使い方などを勉強する
  • JRA-VANの仕様書とにらめっこ
  • その他、1つ1つ、色々勉強

全て理解しなくてもいいのですが、データを弄れるようになるまで、それ相応の時間が必要になると思います。私には、これが結構な壁となりました。

私はせっかちです。カンニングしながら物を覚えるタイプです。ですので、この記事はデータベースの勉強を始めたばかりの私に見せてやりたい内容に仕上げたつもりです。

データベース初心者の馬券師が、この記事を見て、「なんだデータベース簡単だな」って思って頂けるように お届けします!

SPONSORED LINK
アドセンス

リレーショナルデータベースとGUIツール

では、早速簡単な出馬表を作っていきましょう。データベース構築は済みましたね? まだだという方は、こちらの記事にデータベースの構築方法がまとめてありますので、一度ご覧ください。

競馬データベースを構築するための 6つの手順のまとめ
1から自分で勉強して、競馬データベースを構築しようと思うと、大変な時間と労力が掛かってしまいますが、無料のソフトのインストールとセットア...

GUIツールの使い方

GUIツールを起動させてください。A5:SQL Mk-2で説明します。

A5:SQL Mk-2の起動後の画面

図解1 : A5:SQL Mk-2の起動後の画面
  1. pckeibaをクリックし、データベースログインしてください。
  2. ここをクリックすればテーブルが開きます。(今は飛ばします)
  3. localhost / pckeibaを選択してください。
  4. リレーショナルデータベースのアイコンをクリックしてください。

クエリデザイナの新しいウインドが開きましたね?

クエリーデザイナーの画面

図解2 : テーブルをドラッグアンドドロップします。
  1. pckeibaをダブルクリックしてください。
  2. Tablesをダブルクリックしてください。
  3. テーブル一覧が表示されます。
  4. テーブルをドラッグアンドドロップさせた状態

リレーショナルデータベースの意味

では、テーブル一覧の中から、jvd_race_shosaijvd_umagoto_race_joho を探して、 4・の画面にドラッグアンドドロップして表示させてください。

表示させましたら、jvd_race_shosaiRACE_CODEjvd_umagoto_race_johoRACE_CODE をリレーション(接続)してください。ドラッグアンドドロップで接続できます。テーブルとテーブルを接続する = これがリレーションデータベースといわれる理由です。

出馬表に必要なテーブルを用意する

以下のテーブルを探して 4にドラッグアンドドロップしてください。やり方は分かりますよね?以下の画像の状態にリレーションしてください。

リレーションした画像

図解3 : 必要なテーブル同士をリレーションする。
  1. jvd_race_shosaijvd_umagoto_race_johoRACE_CODE をリレーションします。
  2. jvd_umagoto_race_johoSEIBETSU_CODE  と jvd_seibetsu_codeCODE をリレーションします。
  3. jvd_race_shosai と jvd_bataijuRACE_CODEjvd_umagoto_race_joho と jvd_bataijuUMABAN をリレーションします。
  4. jvd_umagoto_race_johojvd_kyosoba_masterKETTO_TOROKU_BANGO をリレーションします。

次に、必要な情報にチェックを入れていきます。以下の画像の状態にしてください。

必要な情報にチェックを入れた画像

図解4 : 必要な情報にチェックマークを入れる

順番にチェックを入れてください。

  1. jvd_umagoto_race_johoWAKUBAN
  2. jvd_umagoto_race_johoUMABAN
  3. jvd_seibetsu_codeCONTENT
  4. jvd_umagoto_race_johoBAREI
  5. jvd_umagoto_race_johoBATAIJU
  6. jvd_bataijuBATAIJU
  7. jvd_umagoto_race_johoZOGEN_FUGO
  8. jvd_bataijuZOGEN_FUGO
  9. jvd_umagoto_race_johoZOGEN_SA
  10. jvd_bataijuZOGEN_SA
  11. jvd_umagoto_race_johoBAMEI
  12. jvd_umagoto_race_johoFUTAN_JURYO
  13. jvd_umagoto_race_johoKISHUMEI_RYAKUSHO
  14. jvd_umagoto_race_johoCHOKYOSHIMEI_RYAKUSHO
  15. jvd_umagoto_race_johoBANUSHIMEI_HOJINKAKU_NASHI
  16. jvd_kyosoba_masterKETTO1_BAMEI
  17. jvd_kyosoba_masterKETTO2_BAMEI

GUIツールのありがたさ

GUIツール A5:SQL Mk-2のありがたさを分かってもらえると思います。SQLタブを選択してください。

SQL文が表示された画面

図解5 : コードを書かなくても A5:SQL Mk-2が書いてくれる

リレーションして、必要な情報にチェックを入れるだけで、SQL文はA5:SQL Mk-2が代わりに書いてくれます。GUIツールすげぇ~~~! A5:SQL Mk-2の作者matsuさんに感謝です!

SQL分のいろいろ解説

自分でSQL文を書かなくても基本的なSQL文が作れてしまうのが分かれば、ハードルはかなり低くなりますね。次にSQL文の簡単な説明をします。ここまでの作業が間違えていなければ、SQL文は次のようになっているはずです。

SQL文を説明する画像

図解6 : SQL文は理解すると難しくない

上記の画像に、それぞれ色を付けました。赤:選択した情報青:基になるテーブル緑:テーブル同士を接続するリレーションのSQL文になります。

SQLを実行してみよう

では、実際に作ったSQLを実行してみましょう。実行タブを選択し、緑のPLAYアイコンをクリックしてください。

SQLの実行画面

図解7 : SQLの実行結果が表示される

SQLの実行結果が表示されました。ただ、このままでは全てのデータが表示されてしまいますので、出馬表としては使いにくいですね。日付・競馬場・レース番号を指定してみましょう。SQLタブを選択し、以下のSQL文を 末尾に追加してください。

SQL文を追加して、データの指定をした画像

図解8 : 指定した日・競馬場・レースだけデータが表示される
  • WHERE 1 = 1 :取得するデータを選択しているSQL文
  • ORDER BY:ASCで馬番順に並べ替えをしているSQL文

SQL文を追加したら、再度SQLの実行をしてみましょう。2015年7月5日、函館競馬場、11レースのデータのみ表示されたと思います。

SQL文を簡潔にしよう

慣れてくるとterapadなどで一括置き換えできますが、SQL文に慣れるのを目的にしますので、理解できるまでは手作業で行ってください。HTMLと同じで、自然と理解できるようになります。

  • SQL文から pckeiba. を全て削除してください。pckeiba.はデータベースの名前なので必要ありません。
  • 早く理解する為にも、自分で見やすいようにSQL文を並べ替えてください。

今後の為にも、敢えてコピペできるコードは張りません。時間が掛かっても上記の2つを行ってください。以下のようになるはずです。

SQL文からデータベース名を削除して見やすいようにSQL文を並べ替えた状態の画像

図解9 : カンマの不足や余分でエラーが出やすいです

これで少しSQL文が、見やすく すっきりしましたね。では、再度SQLを実行してみてください。正しく書けていないとエラーが出ますので、エラーが出たら悪いところを修正してください。SQL文が正しければ、必ずデータが表示されるはずです。

さらに SQL文を簡潔にしよう

これを繰り返し行うことで、SQLの理解は加速します。SQL文を読みやすくすることで、SQL文を改造?しやすくなりますし、簡単なSQL文なら、手打ちで行うことができるようになります。FROM から INNER JOIN までを下記に張り替えてください。

追加したSQL文の画像

図解10 : 追加されたのは □ で囲まれた部分です

今回、追加したのは四角で囲まれた部分です。線を引いた部分はそのままに、その他のテーブル名を全て、四角で囲まれたテーブル名に変更してください。

  • jvd_race_shosai は全て RA
  • jvd_umagoto_race_joho は全て UM
  • jvd_seibetsu_code は全て SC
  • jvd_bataiju は全て BT
  • jvd_kyosoba_master は全て KM

書き換えが終わりましたら、SQLを実行してください。間違いがなければデータが表示されるはずです。(笑)

スッキリしたSQL文

これでSQL文は、かなりスッキリと 見やすいものに変わりましたね。

スッキリしたSQL文

図解11 : だいぶ見やすくなりましたね

どうですか?SQLを実行して、ちゃんとデータが表示されましたか?

何?エラーばかり出る?おかしいなー・・・って、

それもそのはず。先ほどコピペしてもらったSQL文には1つ間違いがあります。どこだか分かりますか?

(゚皿゚)_┳※・・・・・・・・・・ターン・・・・・・・・(;゚ロ゚)ヒー・・・・・・・・・・・⊃

ヒー! すみませんすみません。BTの位置が ONの後ろに来てますよね。前に持ってくれば動くはずです。

いや、もうね、今更だけど何で こんな面倒くさい記事書き出したんだろうと・・・やってらんねーなと(笑)見る人も馬券のことや競馬のことなら楽しんでもらえるかもしれないけど、ブログ書き始めてから、ずっとクソつまんねーデータベースの構築やら、誰が興味あんねんって思ってね(笑)とほほ

MYSQLの文字列を結合しよう

気を取り直しまして、表示されたデータの 性別と 馬齢を ひとまとめにしてみましょう。

CONCATと CASTはGoogle先生に聞いてください。

どちらかのデータを表示させる

表示されたデータの中に、馬体重が2つ・増減符号が2つ・増減が2つありますよね?このデータは

  • 金曜日の段階では、両方データが無い状態
  • 土曜日、日曜日の段階では、速報系データにだけデータがある状態
  • 月曜日になれば、通常データのものを利用する状態

だからです。PC-KEIBAの速報系データのダウンロードタブに、今週の開催データのみ保存するにチェックがあれば、月曜日の段階でも、通常データ・速報系データ両方が保存されるのですが、2000年(昔の)などの馬体重は、速報系データを取得することはできません。ですので、データがあるほうからデータを表示させるようにします。何言ってるかわかります?^^;

  • CONCATで馬体重と kgを結合させています。
  • COALESCEで、引数の最初の非NULL値を返します。非NULL(両方にデータが無い)場合、NULLを返します。つまりBT.BATAIJU ・ UM.BATAIJUのどちらかにデータがあれば、データが表示されます。
  • CASTで、ほにゃららです。(さっき調べたでしょ?( ´△`)

後は、増減符号と増減も同じようにしてください。

見出しに名前を付ける

最後に分かりやすい名前を見出しに付けましょう。今回は分かりやすく日本語で付けてみますが、環境によって文字化けする可能性があるので、基本的にはローマ字で名前を付けるほうがいいみたいです。

全てのデータの後に、AS ●●,を追加してください。以下の画像のようになるはずです。

見出しに名前をつけるSQL文

図解12 : 見出しに名前がついた

この記事のまとめ

説明を優先して、途中、リレーションを一気に行っていますが、通常は 1つリレーションさせたら 1つ必要なデータをチェックし、SQLが正常に動くかどうか実行(確認)しながら必要なデータを増やしていくと良いでしゅう。

プロの方から見れば稚拙で分かりにくい長文になってしまった部分は否めませんが、何からやったら良いのかが分からないという初心者の方に、なんとなくでも、流れが分かったと思っていただけたら幸いです。全て理解する必要はありません!色々いじってたら大丈夫!

あと、JRA-VANの仕様書はコピーして何度も見直してください。これだけはどうしようもありません。

よし!しばらくはブログ書かないぞ!(笑)

SPONSORED LINK
アドセンス
楽天336×280

シェアしていただけると励みになります!

コメントをどうぞ

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">