ADOよりSQL文(非等価結合)


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
vol235

これならわかるマイクロソフトアクセス活用法
            -->ADOよりSQL文(非等価結合)
              
発行者:高内 章治 2015年6月10日
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┏ 今日の内容 ━━━━━━━━━━━━━━━━━━━━━━━━┓

┃【01 - ご挨拶    】
┃【02 - トピックス  】ADOよりSQL文(非等価結合)

┃【03 - 編集後記    】

┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

─────────────────────────────────
【01 - ご挨拶    】          
─────────────────────────────────

こんにちは、高内(こうない)です。

今回は、

「ADOよりSQL文(非等価結合)」

についてお話したいと思います。




─────────────────────────────────

【02 - トピックス】: ADOよりSQL文(非等価結合)

─────────────────────────────────

前回、「ADOの応用」というメルマガを発行しました。

2つのファイルから、同じかそれ以上のデータを抽出するやり方でした。

私は、「ADO」を使って、抽出しました。

メルマガの読者の方からメールがきました。

「SQL」で抽出することが出来るそうです。

SQLの「非等価結合」を使えばできるそうです。

「結合」を調べました。
データを結合するには、2つのやり方あります。

  • 一つは、「等価結合」です。
  • もう一つは「非等価結合」です。

「等価結合」は、同じデータを結合します。
これが一般的です。
クエリのデザインでは、この結合になります。
「=」ですね。

「非等価結合」は、等価記号(=)ではなく、範囲(BETWEEN、<、<=、>、>=)で結び付けることができます。

非等価結合が必要となるのは次のような場合です。

  • 結合する列に同じ値が存在しない
  • 値の範囲で結合する

などです。

結合列に同じ値がある場合は等価結合を使用しますが、同じ値が存在しない場合や、範囲で結び付ける場合は非等価結合を使用します。

こういうやり方があるのですね。
知りませんでした。

前回の例で説明します。

***********************


以下のような「A」データがあります。

NO
1
2
5
6
8
9
10

次に以下のような「T」データがあります。

NO
3
8

「T」データと同じデータ、もしくはこれより、大きいデータを「A]データから取り出したいということです。

解答は

「T」の「3」には、大きい「A」の「5」です。
「T」の「8」には、同じ「A」の「8」です。

********************

今回は、SQLの「非等価結合」を使用します。
以下のようにおこないます。

例を上げて説明します。

  1. 「A」データのテーブルです。
    テーブル名は「T_Aデータ」にします。
    以下のようになっています。
    実際は、オートナンバーが主キーになっています。

    NO
    1
    2
    5
    6
    8
    9
    10

  2. 「T」データのテーブルです
    テーブル名は「T_Tデータ」にします。
    以下のようになっています。
    実際は、オートナンバーが主キーになっています。

    NO
    3
    8

  3. これを、SQLの「非等価結合」で取り出します。

    SQL文は以下のようになります。

    SELECT T_Tデータ.[NO] AS T_NO, MIN(T_Aデータ.[NO]) AS A_NO
    FROM T_Tデータ INNER JOIN T_Aデータ ON T_Aデータ.[NO] >= T_Tデータ.[NO]
    GROUP BY T_Tデータ.[NO] ;

    です。

    SQLの内容は、
    T_TテーブルのNOが、T_A_テーブルのNO以上になるデータ集合のうち、T_A_テーブルのNOが最小になるものを求める。
    だそうです。
    (読者の方から教えて頂きました。)

    注意しないといけないのは、このSQLは、クエリのデザインでは、作成できません。
    「SQLビュー」に直接、SQL文を書きます。

    実際に、やってみましたが、取り出せます。

    SQLが使用できるのであれば、ADOより、SQLの方がよいですね。
    処理スピードも速くなりますし、バグの発生も少なくなります。

こういうやり方もあるのですね。

参考にしてください。



─────────────────────────────────
【03 - 編集後記    】       
─────────────────────────────────

女子サッカーのワールドカップ カナダ大会が始まりました。

初戦、スイスに、1−0で勝ちました。

宮間が、PKを決めました。

良かったですね。

次回は、カメルーンと対戦します。

ワールドカップの始まる前には、あまり試合で勝てませんでしたが、澤が最後に加わりました。
やっぱり、澤が入ると違いますね。

次も頑張って欲しいですね。


◆私がアクセスをマスターできたのは!!
http://www.sk-access.com/kyozai/zaiko1.html  

テーブル作成からVBAまでマスターできます。 
「在庫管理システムをアクセスで作ってみよう」教材です。
http://www.sk-access.com/kyozai/zaiko2.html  


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
●ご意見・ご感想・ご質問
 
『メルマガでもっとお役にたてる情報を配信したいと思いますので、日ごろから疑問に思っていることを教えてください。
宛先はこちらへです』

  •  kohnai★vega.ocn.ne.jp
      (高内:こうない:)
    (メールするときは、★を@に変えてください)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


◎「これならわかるマイクロソフトアクセス活用法」 のバックナンバー・配信停止はこちら

archive.mag2.com/0000222659/index.html

◎以下のホームページからでもバックナンバーを見ることができます。

http://www.sk-access.com/mailmaga/index.html

登録・解除につきましてはご自身でお願いいたします。

※このメールマガジンの転送はOKですが、掲載された記事の内容を許可無く転載することをを禁止させて頂きます。
必ず事前にご相談ください。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


1週間でアクセス(Access)のシステム開発ができる〜
「在庫管理システムをアクセスで作ってみよう」教材

「アクセスのプログラム/システムを短期間で開発したい方」、
「アクセスのフォーム/VBAを完全にマスターしたい方」のための
アクセス(Access)を使って1週間でシステム開発する究極の方法とは?

「アクセス(Access)のシステムを無料のSQL Server 2016 Expressへ
移行してみよう」教材

あなたの会社のアクセス(Access)のデータベースやシステムに不安を感じていませんか?
アクセスのデータ量が多くなり処理スピードが遅くなった。
アクセスのデータを共有したい。
セキュリティに不安がある。などと、感じている方は!!
(SQL Server 2016 Expressバージョンです。)


「アクセス(Access)プログラムの仕様書の作り方」教材
マイクロソフトアクセスを使用して、プログラムの作成/システム開発をおこないたい方の為に、
アクセス(Access)のプログラム開発に成功するために絶対に必要な「仕様書」とは?



[↑一番上へ]
[マイクロソフトアクセス活用法(メールマガジン)(ホームへ)]
12:091001

アクセス全体

VBA

SQL Server