Script事業案内エクセル以外トップSQL入門サブクエリ(副問合せ)最終更新日:2019-12-17サブクエリ(副問合せ)エクセルVBAでデータベースを扱うためのSQL入門です。前回までで、基本的な部分については一通り説明しました。今回は、より便利にSQLを使えるように副問合せ(サブクエリ)を解説します。サブクエリが使えるようになると、SQLのすごさがより実感として分かってくるはずです。他のテーブルのデータで追加/更新/削除、このなかでサブクエリを紹介しましたが、エクセルVBAでデータベースを扱うためのSQL入門です。前回までに、データの追加/更新/削除を解説しました。全て単一のテーブルだけで完結しているもので、データはエクセルのシートにあるデータを使うものでした。SELECT部分はサブクエリ(副問合せ)と呼ばれるものになります。サブクエリについては、次回以降で詳しく解説します。このように記載していました。サブクエリについて、基本的な使い方を説明していきます。使用するテーブル定義は以下になります。全テーブル定義とテーブル自動作成VBAデータベースの正規化とマスタの作成で作成した全テーブル定義と、テーブル名変更と列追加(ALTERTABLE)とテーブル自動作成で作成したテーブル自動作成VBAを掲載しておきます。エクセルVBAでデータベースを扱うためのSQL入門です。前回までにテーブルを作成したり、削除したりできるようになりました。サブクエリ(副問合せ)とはまずクエリとは、「問い合わせ」の意味の英単語です。データベースに対する問い合わせ言語としてSQLがあります。クエリと言ったら、データベースではSQLの事になります。サブクエリとは、クエリの中の一つの要素として、さらにクエリを入れたものです。クエリを入れ子(ネスト)しての使い方になります。SELECT、INSERT、UPDATE、DELETEの各命令の中の子要素として、SELECT命令を入れた書き方になります。サブクエリの中にさらにサブクエリを入れられます、つまり、多段階のネストができます。SELECTの結果は、複数のカラム(名前とデータ型)を持つ複数行のデータです。これは、1つのテーブルと同じとみなすことができます。ALL)エクセルVBAでデータベースを扱うためのSQL入門です。前回のJOINでは複数のテーブルを横に結合するものでしたが、SQLではデータを縦に連結することもできます。SQLのSELECTした結果は1つのテーブルと同様に見ることができます。SELECTの結果を1つのテーブルとしてSQLの中で使う事がサブクエリの基本的な使い方になります。サブクエリの結果はデータリストとして使う事もできます。FROM句でサブクエリを使うSELECTのFROM句に1つのテーブルとしてサブクエリを使います。SELECTとして実行できるものは、それを()括弧で囲う事で、1つのテーブルとして扱う事が出来ます。codeごとの合計数を、SELECTの選択カラムとして追加します。TT.code一見すると難しそうに見えますが、サブクエリを1つのテーブルとしてみると単純なSQLになります。TT.codeサブクエリを作成する場合は、単独のSELECTとして動作するかを先に確認すると良いでしょう。code上記2つのSQLを合体させれば目的のサブクエリを組み込んだSQLが完成します。WHERE句でサブクエリを使うSELECTのWHERE句の1つの条件としてサブクエリを使います。1カラムだけのSELECTの結果は、データリストとしてWHERE句の条件として使えます。m_customerのaddressが「東京~」をt_salesから抽出します。'東京%')サブクエリで取得されるデータは、codeのリストになります。このcodeのリストをINの中に指定しています。これは、サブクエリを使わずにJOINで書くことができます。'東京%'WHERE句にあるサブクエリは、その多くはJOINで書き直すことができます。WHERE句にサブクエリを追加しようと思ったときは、まずJOINで出来ないか良く検討してみると良いでしょう。後からさらに絞り込み条件を追加するような場合は、局所的な修正で済みとても便利な場合があります。SELECTのカラムにサブクエリを使うSELECTの列リストの1つとしてサブクエリを使います。1カラムだけのSELECTの結果は、SELECTの選択列(カラム)として使用できます。item_countの全合計を1つの列として追加します。Tこのサブクエリは汎用性がなく融通の利かないSQLと言えます。これは、サブクエリを使わずにJOINで書くことができます。TTSELECTの選択リストにあるサブクエリは、その多くはJOINで書き直すことができます。選択リストにサブクエリを追加しようと思ったときは、JOINで出来ないか良く検討してください。SELECTの選択リストにサブクエリを使う事は推奨できません。代替方法が無い場合に限定して使うようにしてください。UPDATAEでサブクエリを使う「他のテーブルのデータで追加/更新/削除」で紹介したSQLです。サブクエリで取得したデータをUPDATEのSET句で使用しています。'001'サブクエリは1カラム限定、かつ、データ型を一致させるようにしてください。DELETEでサブクエリを使う「他のテーブルのデータで追加/更新/削除」で紹介したSQLです。サブクエリで取得したデータをDELETEのWHERE句で使用しています。code,sales_date)これは、SELECTのWHEREで使う場合と同じ使い方になります。サブクエリ(副問合せ)の最後に今回は、サブクエリの基本的な使い方を説明しました。基本的な使い方として、FROM句で使って他のテーブルとJOINする書き方と、WHERE句のINに指定する書き方をマスターしておけば良いでしょう。複雑化したSQLへのコメントの書き方および整形について解説します。Next)|VBA入門7.マクロって何?VBAって何?|VBA入門8.セルに文字を入れるとは(Range,Value)|VBA入門9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説10.ひらがな⇔カタカナの変換|エクセル基本操作トップSQL入門サブクエリ(副問合せ)このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。GASスプレッドシート入門スプレッドシート応用GAS入門GAS応用トップSQL入門サブクエリこのサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。