SQLToolsプラグイン(その4・一般のSQLを実行する)

SQLToolsプラグインでは、一般のSQLを実行することもできます。

1.SQLの作成

一般のSQLを実行する場合、SQLの書き方には特に制限はありません。
「SQLクエリ」→「新規」メニューでSQLを作成しておきます。

2.SQLの結果を出力するテンプレートタグ

SQLの結果を出力するには、以下のテンプレートタグを組み合わせます。

2-1.MTSQLRowsタグ

MTSQLRowsタグは、SQLを実行して、その結果を順に出力するブロックタグです。
「name」モディファイアで、実行するSQLの名前を指定します。

2-2.MTSQLColumnタグ

個々の結果から、特定のカラムの値を出力するファンクションタグです。
「column」モディファイアで、出力するカラムの名前を指定します。

2-3.MTSQLRowCountタグ

SQLで読み込んだ行(レコード)の数を出力するファンクションタグです。

2-4.MTSQLRowsHeader/MTSQLRowsFooterタグ

MTSQLRowsタグのブロックの中で、繰り返しの最初/最後を判断するブロックタグです。

2-5.MTSQLRowsGroupHeader/MTSQLRowsGroupFooterタグ

MTSQLRowsタグのブロックの中で、結果を特定のカラムの値でグループ化して出力する際に使います。
MTSQLRowsGroupHeaderタグは、カラムの値が変わった直後の繰り返しかどうかを判断します。
一方、MTSQLRowsGroupFooterタグは、カラムの値が変わる直前の繰り返しかどうかを判断します。
年別ごとにオブジェクトの数を集計して、年毎にグループ化して出力するような際に、このタグを使うことができます。

2-6.MTSQLValueタグ

SQLの結果が1行だけで、なおかつその行にカラムが1つしかない場合は、MTSQLRowsタグの代わりに、MTSQLValueというテンプレートタグを使います。

3.事例

IDが1番のブログで、アップロードしたアイテムの数を月ごとに集計して出力したいとします。
この場合、SQLは以下のように作ります。

SELECT YEAR(asset_created_on) AS year, MONTH(asset_created_on) AS month, COUNT(*) AS count
FROM mt_asset
WHERE asset_blog_id = 2
GROUP BY year, month

また、テンプレートは以下のように書きます。
「○○○」にはSQLにつけた名前を指定します。

<mt:SQLRows name="○○○">
  <mt:SQLRowsHeader>
    <table>
      <tr>
        <th>年</th><th>月</th><th>数</th>
      </tr>
  </mt:SQLRowsHeader>
      <tr>
        <td><$mt:SQLColumn column="year"$></td>
        <td><$mt:SQLColumn column="month"$></td>
        <td><$mt:SQLColumn column="count"$></td>
      </tr>
  <mt:SQLRowsFooter>
    </table>
  </mt:SQLRowsFooter>
</mt:SQLRows>