2009/03/02
【誰にでもできる!システム開発】サブクエリ(後編)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
『誰にでもできる!システム開発』 2009/03/02 号
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ご愛読、ありがとうございます。
このメールマガジンは、システム開発を始めたばかりの方、これから始める
方向けに、筆者が日頃から心がけていることをお話しています。
扱う内容については、テクニックと考え方を半分ずつで構成しています。
思っていた内容と違う、つまらない、読む気力が無くなったという方、
購読解除はこちらからできます。
http://www.mag2.com/m/0000263428.html
著者プロフィール
http://www.shiga-it-office.com/mailmagazine/writer.html
事務所概要
http://www.shiga-it-office.com/profile.html
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■第33回 サブクエリ(後編)
────────────────────────────────────
前回は、WHERE句のサブクエリを紹介しました。
WHERE句にサブクエリを用いると、サブクエリの結果を条件式に利用するこ
とができました。
今回は、SELECT句、FROM句のサブクエリを紹介したいと思います。
実例を通して紹介しますので、以下のサンプルテーブルをご覧ください。
・取引明細
---------------------------------------------
| 取引番号 | 顧客コード | 商品コード | 数量 |
-----------+------------+------------+-------
| 00000001 | 0001 | A001 | 10 |
-----------+------------+------------+-------
| 00000002 | 0001 | B001 | 5 |
-----------+------------+------------+-------
| 00000003 | 0002 | A002 | 8 |
-----------+------------+------------+-------
| 00000004 | 0003 | A001 | 25 |
-----------+------------+------------+-------
| 00000005 | 0001 | B002 | 15 |
---------------------------------------------
・商品
----------------------------------
| 商品コード | 商品名 | 単価 |
-------------+------------+-------
| A001 | 抹茶ケーキ | 200 |
-------------+------------+-------
| A002 | モンブラン | 250 |
-------------+------------+-------
| B001 | クッキー | 80 |
-------------+------------+-------
| B002 | ビスケット | 70 |
-------------+------------+-------
| C001 | マシュマロ | 100 |
----------------------------------
●SELECT句のサブクエリ
WHERE句でのサブクエリは、条件式として利用する目的で使われ、サブクエ
リの結果を取得することはできませんでした。
しかし、SELECT句でサブクエリを使用したときは、メインクエリ結果の一部
として、サブクエリの結果を取得することが可能です。
以下の例では、商品の各レコードに対し、取引明細の数量を合計したものを
サブクエリとして取得します。
SELECT
商品.商品コード,
商品.商品名,
商品.単価,
(SELECT SUM(数量)
FROM 取引明細
WHERE 商品コード = 商品.商品コード) AS 数量計
FROM
商品
ORDER BY
商品コード
-------------------------------------------
| 商品コード | 商品名 | 単価 | 数量計 |
-------------+------------+------+---------
| A001 | 抹茶ケーキ | 200 | 35 |
-------------+------------+------+---------
| A002 | モンブラン | 250 | 8 |
-------------+------------+------+---------
| B001 | クッキー | 80 | 5 |
-------------+------------+------+---------
| B002 | ビスケット | 70 | 15 |
-------------+------------+------+---------
| C001 | マシュマロ | 100 | NULL |
-------------------------------------------
●FROM句のサブクエリ
最後はFROM句のサブクエリです。
これまでの、WHERE句、SELECT句でのサブクエリは、クエリ結果の値を条件
式や結果として利用するだけでしたが、FROM句に記述した場合は、サブクエ
リ結果をテーブルとして扱うことができます。
サブクエリ結果Aとサブクエリ結果Bのクエリを求めるといった使い方がで
きますのでクエリの幅が広がります。
以下の例では、取引明細の商品毎に平均数量をサブクエリで求め、その結果
と商品を結合しています。
SELECT
商品.商品コード,
商品.商品名,
商品.単価,
取引数量.平均数量,
(商品.単価 * 取引数量.平均数量) AS 売上平均
FROM
商品 LEFT OUTER JOIN
(SELECT 商品コード, AVG(数量) 平均数量
FROM 取引明細
GROUP BY 商品コード) AS 取引数量
ON 商品.商品コード = 取引数量.商品コード
ORDER BY
商品コード
--------------------------------------------------------
| 商品コード | 商品名 | 単価 | 平均数量 | 売上平均 |
-------------+------------+------+----------+-----------
| A001 | 抹茶ケーキ | 200 | 17.5 | 3500 |
-------------+------------+------+----------+-----------
| A002 | モンブラン | 250 | 8 | 2000 |
-------------+------------+------+----------+-----------
| B001 | クッキー | 80 | 5 | 400 |
-------------+------------+------+----------+-----------
| B002 | ビスケット | 70 | 15 | 1050 |
-------------+------------+------+----------+-----------
| C001 | マシュマロ | 100 | NULL | NULL |
--------------------------------------------------------
------------------------------------------------------------------------
■編集後記
最後までお読みいただき、ありがとうございました。
昨年5月に創刊し、150名以上もの読者に支えられてきた当メールマガジンで
すが、次回3月16日発行分を持ちまして、休刊させていただくことになりま
した。
10ヶ月間という短い期間ではありましたが、読者の皆さんがいたおかげで、
ここまで連載を続けることができました。
本当にありがとうございました。
関連メールマガジン「誰にでもできる!インターネット活用術」は、今後も
連載を続けていきますので、よろしければこちらもご購読いただければと思
います。
ご感想・ご意見・ご要望などありましたら、気軽にご連絡ください♪
では、また次回お会いしましょう!
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
『誰にでもできる!システム開発』 2009/03/02 号
本日のメールマガジンを読んだ感想をお聞かせください。
お寄せいただいた感想は、メールマガジン上で紹介させていただくことが
ありますので、ご了承ください。
配信中止はこちらから↓
http://www.mag2.com/m/0000263428.html
メールアドレスの変更はこちらから↓
http://www.mag2.com/m/0000263428.html
ご意見&ご感想はこちらから↓
http://www.shiga-it-office.com/mailmagazine/ImpressionFrom.html
コンサルティングのご相談はこちらから↓
http://www.shiga-it-office.com/inquiry.html
発行元 志賀IT事務所
http://www.shiga-it-office.com/
関連メールマガジン 「誰にでもできる!インターネット活用術」
http://www.mag2.com/m/0000263426.html
関連ブログ
☆コンサル日和
http://d.hatena.ne.jp/kei_onpu/
☆爆裂!C#野郎
http://csharp.yaminabe.info/
☆10年戦える開発技術
http://10year.yaminabe.info/
☆情報処理技術者試験午前対策
http://am.yaminabe.info/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


