データベースは、VBAではなく、いかにデータを抽出するかです。
目に見えない、架空のクエリを想像できれば、さらに、データ抽出が楽になります。
目次
目に見えないクエリを想像することで、抽出可能なデータ
こんにちは。伊川(@naonaoke)です。
前回は、SQL文の基礎中の基礎を紹介しました。
また、前回紹介した書籍のChapter3で、LIMIT句というのが登場します。
結論から言いますと、ACCESSでは、LIMIT句は、利用できません。
なので、LIMIT句の代替のコードを利用します。
少し面倒な作業が増えます。
もちろん、このような複雑なことをしなくても、今回のサンプルでは、データ抽出ができます。
しかし、この面倒な作業を、覚えることで、複雑なデータ抽出ができるようになります。
VBAよりも、ずっと面白い内容です。
このブログはこんな人にお勧め
- ACCESSでクエリを勉強している人
- クエリのスキルに限界を感じている人
- SQLを勉強している人
このブログを、読み終わるころには・・・・
初めて、競馬で、データ抽出で、壁に当たった内容でした。
デザインビューを見ても到底、その時の私には、理解できない内容でした。
しかし、目に見えないクエリが、どのように作動しているのかを、このブログで理解できるようになります。
上位2つのレコードを抽出したい
この、テーブルから、上位2つのレコードを抽出します。
つまり、伊川直助、伊川直子を、抽出します。
このような状態にします。
普通は、これで完了です。
もちろん、これでも正解ですが、架空のクエリを作成して、抽出をします。
LEFT JOIN、左外部結合を利用して、抽出します。
LEFT JOIN(左外部結合) 作業手順 その1 MT_testから、上位2つのレコードを定義する
イメージは、こんな感じです。
SELECT TOP 2 * FROM MT_test
この意味は、MT_testの、上位2つのレコードを定義する書き方です。
前回も言いましたが、SELECT~ FROM ~の基本系です。
まだ、ここには、記載されていませんが、目に見えないクエリは、t2が付いているクエリです。
SELECT TOP 2 * FROM MT_test
この文章から、下記のクエリを想像するのです。
LEFT JOIN(左外部結合) 作業手順 その2 MT_testと、t2を結合する
LEFT JOIN (SELECT TOP 2 * FROM MT_test) AS t2
ON MT_test .ID = t2.ID
このSQL文の意味は、
左外部結合しなさい。
MT_testのIDと、SELECT TOP 2 * FROM MT_test(目に見えないクエリ)のID
という意味です。
LEFT JOIN(左外部結合) 作業手順 その3 MT_testと、t2の外部結合の結果
この赤いところが、左外部結合されています。
t2に関しては、MT_testの、上位2つのレコードしか定義していないので、3~5は、Nullになります。
LEFT JOIN(左外部結合) 作業手順 その4 WHEREで、空白以外を抽出
WHERE t2.ID IS NOT NULL;
これも前回紹介した、SQL文の基本中の基本です。
このように抽出することができます。
LEFT JOIN(左外部結合) 作業手順 その5 所管
これは、私が、毎週、かかわっている競馬のデータです。
抽出条件
数値、1位、2位の馬が、1枠であること
かつ、同一グループ(同一レース)であること
この条件で、抽出するには、
今回、紹介した、架空のクエリを作成します。
競馬も、悪い事ばかりではありません。
ここがポイント
前回と、今回の、動画、ブログを読んで、面白いと思った人は、
本気で、SQLの勉強をした方がいいです。
VBAより、多分、お金になります。
間違いないです。
ということで、少し難しめのクエリの書籍も購入しました。
SQLは、本当に面白いです。
まとめ
架空のクエリを作成できるようになり、また、データ抽出の幅が広がりました。
ぜひとも、架空のクエリを作成できることに感動してください。
今回も最後まで読んでいただきありがとうございました。
今回のサンプルファイルは、No298です。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。