最終更新日:2019-12-31サブクエリのネストとSQLコメント&整形エクセルVBAでデータベースを扱うためのSQL入門です。前回は、サブクエリの基本的な使い方を説明しました。FROM句で使って他のテーブルとJOINする書き方、WHERE句のINに指定する書き方等々。今回は、サブクエリを多段階にネストする書き方を説明します。複雑化したSQLへのコメントの書き方およびSQLの整形についても解説します。使用するテーブル定義は以下になります。全テーブル定義とテーブル自動作成VBAデータベースの正規化とマスタの作成で作成した全テーブル定義と、テーブル名変更と列追加(ALTERTABLE)とテーブル自動作成で作成したテーブル自動作成VBAを掲載しておきます。エクセルVBAでデータベースを扱うためのSQL入門です。前回までにテーブルを作成したり、削除したりできるようになりました。サブクエリのネストサブクエリの中に、さらにサブクエリを入れられます。サブクエリのネストです。全体つまり、東京で始ま行にのみ合計数が出力されます。見れば分かりますが、このようなサブクエリの組み方や整形について以下で説明します。サブクエリのネストの組み方SQLは順に作成していきます。サブクエリを作成します。codeサブクエリそれぞれ単独で動作確認して完成させます。次にSQL全体を組みます。TT.codeここでも動作確認しましょう。TT.codeこれでひとまず完成です。出力結果を良く確認して完成されます。サブクエリは順序良く作成すれば、それほど難しくなく組むことができます。エクセルのシートでの関数のネストと同じ要領です。ネストしすぎたり多くのサブクエリを使用すると、SQLが複雑となり、後々の修正が大変になってしまいます。一度正しく動いたものを変更することはとても大変ですし危険も伴いますが、さらなる変更に対応するために、SQLをリファクタリングすることも必要になる場合もあります。SQLのコメントについてSQLの中にコメント(実行では無視される)を記載する方法は2通りあります。コメント--から行末までがコメントとなり、SQL実行で無視されます。*//*から*/の間が全てコメントになります。行の途中だけでもコメントアウトできますし、複数行をまとめてコメントアウトもできます。・・・SQLの整形SQLは適宜コメントを入れたり、インデント・改行で見やすくしておくようにしましょう。上記の最初のSQLと最後のSQLは同じSQLです。コメントを追加している点と、閉じ括弧の位置をずらしています。開き括弧の位置に合わせる方法と、一番後ろに入れる方法があります。どちらが良いという事もなく、人によって好みが分かれるとところでしょう。TT.codeGUIツールを使うと、SQLが見やすく色分けされたり、サブクエリのネストが視覚化されたりするので、より作成しやすいはずです。SQLiteまずは、自身が最も見やすいと思う形に整形してみましょう。WEBや書籍で見た時に見やすいと思ったら、それを真似すると良いでしょう。文字列をイミディエイトで取得して、DBのGUIツール等に貼り付けた時に見やすくなり、効率が良くなります。vbCrLfまた、VBAでの文字列生成が多くなる場合は、データの挿入:バルクインサートエクセルVBAでデータベースを扱うためのSQL入門です。前回でデータをINSERTすることができるようになりましたが、処理時間に不満がありました。データベースを使うのでしたら、エクセルで扱いに困ってしまうような大量データをストレスなく扱いたいところです。ここで紹介しているStringbuilderクラスを使うと、文字列作成のVBAが書きやすくなるはずです。サブクエリのネストとSQLコメント&整形の最後に今回は、サブクエリを多段階にネストする書き方と、SQLのコメントの書き方や、SQLの整形について解説しました。サブクエリを使っていくと、かなり複雑な処理もSQL作成できるようになります。それとともにSQLはより複雑化していきます。SQLを付けたし付けたしで拡張していった結果、SQLがサブクエリだらけになってしまうこともあります。このような場合に、SQLのサブクエリをすっきり書き直す方法があります。それがWITH句、共通テーブル式と呼ばれるもので、同じようなサブクエリはWITH句を使用して共通化することができます。次回は、このWITH句について解説します。Next)|VBA入門7.マクロって何?VBAって何?|VBA入門8.セルに文字を入れるとは(Range,Value)|VBA入門9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説10.ひらがな⇔カタカナの変換|エクセル基本操作トップSQL入門サブクエリのネストとSQLコメント&整形このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。GASスプレッドシート入門スプレッドシート応用GAS入門GAS応用トップSQL入門サブクエリのネストとSQLコメント&整形このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。