SQLをSQLビューから作成を始めると、今までのクエリが無駄に思えてきます。
エイリアスとjoinを利用して、クエリを作成します
目次
サイバイマンを減らすクエリ
こんにちは。伊川(@naonaoke)です。
前回は、エイリアスについて解説しました。
しかし、実行するクエリに関しては、3つあります。
この3つのクエリを1発で実行する方法を紹介します。
単純に、INNER JOINと、エイリアスを利用します。
JOINに関しては、下記の記事で紹介しています。
相変わらずですが、競馬ネタであることをご了承ください。
このブログはこんな人にお勧め
- ACCESSを勉強している人
- クエリを勉強している人
- ACCESSにクエリが沢山ある人
このブログを、読み終わるころには・・・・
複数のクエリを作成すると、メンテナンスが困難になります。
SQLを、直で編集するスキルがあれば、複数のクエリを作成することなく、
1つのクエリで実行することができます。
1発のクエリで実行する
Q_買い目1というもを作成するのに、
- Q_指数買い目順位2
- Q_指数買い目順位5
上記の2つのクエリが必要となります。
当然、1発で実行できるなら、2つのクエリは不要になるわけです。
この、Q_指数買い目順位2、Q_指数買い目順位5は、MT_数値追加から、派生したものです。
MT_数値追加から、派生したクエリ(サイバイマン)ならば、1発で実行できます。
1発のクエリで実行する 作業手順 その1 見出しの考え方
SELECT ~
FROM~
WHERE~
この形が基本です。
SELECT
ここには、クエリの見出しを書きます。
FROM
MT_数値追加と、Q_買い目1には、何も共通するものはありませんので、見出しは、考えて作成しなければなりません。
Left(T1.レースID馬,16) AS レースID
,0 AS 返還フラグ
,4 AS 券種
,Val(Right(T1.レースID馬,2)) AS 軸2
,Val(Right(T2.レースID馬,2))AS ヒモ
,0 AS 空白
,100 AS 購入金額
,Null AS 空白2
,”A” AS 自信
FROM
余談ですが、このようなことをやっていると、会社の実務なんてカンタンにこなせるようになります。
自動投票に関しては、妥協は許されません。
しかし、実務に関しては、妥協は許されます。なぜならば、出来ないものは、出来ないからです。
できないモノを、どうやって、出来るようにするのかっていうこと考える事が、スキル向上につながります。
出来る、出来ないは、問題ではありません。
1発のクエリで実行する 作業手順 その2 テーブルを結合する
WHERE T1.順位=2 AND T2.順位=5;
2位と、5位で抽出するには、このように記載します。
FROM
MT_指数追加 AS T1 INNER JOIN MT_指数追加 AS T2
ON Left(T1.レースID馬,16) = Left(T2.レースID馬,16)
1発のクエリで実行する 作業手順 その3 完成のSQL文
SELECT Left(T1.レースID馬,16) AS レースID ,0 AS 返還フラグ ,4 AS 券種 ,Val(Right(T1.レースID馬,2)) AS 軸2 ,Val(Right(T2.レースID馬,2))AS ヒモ ,0 AS 空白 ,100 AS 購入金額 ,Null AS 空白2 ,"A" AS 自信 FROM MT_指数追加 AS T1 INNER JOIN MT_指数追加 AS T2 ON Left(T1.レースID馬,16) = Left(T2.レースID馬,16) WHERE T1.順位=2 AND T2.順位=5
これで、3つのクエリを、1個にまとめることができました。
ここがポイント
競馬ネタなので、どうでもいい事なのですが、3つのクエリが1つになったということが、うれしくい思います。SQL文を、直接編集することで、痒い所に手が届くような感じになります。実務でも、痒い所に手が届かず、ヤキモキしていることも、多々あると思います。そんなときは、サブクエリ、JOIN、エイリアスを利用して、クエリを効率よく作成しましょう。
まとめ
データベースを利用するなら、この程度のクエリは、サクサク書けるようになりたいですね。
千里の道も一歩からではないでが、日々、精進したいと思います。
今回も最後まで読んでいただきありがとうございました。
今回のサンプルファイルは、No303です。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。