MSDE FunClub 現在までのアクセスカウント数 最終更新日 : 2000/07/08
Microsoft Data Engine FunClub
Since 2000.07.08
SQLServer7.0/MSDE 完全トレーニングテキスト(上巻)
【第2章124p 〜 125p掲載】


-- [SQL文の基礎(例題22)EX-22.SQL]
--             SQLServer7.0  Transact-SQL言語
--             日本技術ソフト開発  堀川 明
--            http://www.horikawa.ne.jp/msde/
-- 
-- これから操作する既定のデータベースを MySampleTest にします
    USE MySampleTest
GO

-- ( 件処理されました)の表示を抑制する
    SET NOCOUNT ON
GO

-- 【考え方その1】
--     受注明細表を最初に扱う考え
    SELECT 受注明細.商品コード  , 
           (SELECT 商品名 FROM 商品 
               WHERE 商品コード = 受注明細.商品コード ) AS 商品名情報 ,
           SUM(受注明細.数量) AS 受注総数
    FROM 受注明細
    GROUP BY 受注明細.商品コード
    HAVING ( SUM(受注明細.数量) >= 2000 )
    ORDER BY 受注明細.商品コード


-- 【考え方その2】
--     商品表を最初に扱う考え
--     この例は、集計作業が2回行われるので良くない
--     クエリアナライザの実行プランで見てみましょう!!
    SELECT 商品.商品コード , 商品.商品名 , 
           (SELECT SUM(数量) FROM 受注明細 
               WHERE 商品コード = 商品.商品コード) AS 受注総数
    FROM 商品
    WHERE  商品.商品コード
      IN (
           SELECT   受注明細.商品コード FROM 受注明細
           GROUP BY 受注明細.商品コード
           HAVING ( SUM(受注明細.数量) >= 2000 )
      )
GO


-- 【考え方その3】
--     FROM句とINNER JOINの応用
--     このSQL文は、考え方1に比べて、多少パフォーマンスがあがる
--
    SELECT 商品.商品コード , 商品.商品名 , T.受注総数
    FROM (
           商品 INNER JOIN (    
                    SELECT   受注明細.商品コード AS 番号 ,
                             SUM(受注明細.数量) AS 受注総数
                    FROM 受注明細
                    GROUP BY 受注明細.商品コード
                    HAVING ( SUM(受注明細.数量) >=2000 )
           ) AS T
           ON 商品.商品コード = T.番号
    )
GO











技術評論社の書籍ガイドへ
上巻:ISBN4-7741-0965-7

ウィンドウを閉じる


(株)日本技術ソフト開発 責任編集:堀川 明
MSDE FunClubに関するご意見・ご要望等ございましたら、 msdefun@horikawa.ne.jp までご連絡下さい。
HOME: http://www.horikawa.ne.jp/msde/


MSDE FunClubの運営は、マイクロソフト社とは一切の関係はありません