logo
     

メニュー
↓ SQL ↓
●データ取得の基本(SELECT)

●取得条件の指定(WHERE)

●計算式を利用する

●取得データの並べ替え
      (ORDER BY)


●別名を付ける

●データを集計(グループ化)する

●テーブルの結合
      (INNER JOIN)


●テーブルの結合
      (OUTER JOIN)


●テーブルの結合
      (CROSS JOIN)


●重複行の排除(DISTINCT)

⇒副問い合わせ(サブクエリ)

●相関副問い合わせ
      (相関サブクエリ)


●クエリの結合

●文字列値を連結する

●文字列の一部を取り出す

●文字列を置換する

●NULLを置き換える

●条件によって置き換える

↓SQL Server 2012 Express↓
●SQL Server 2012 Express
      インストール


●SQL Server 2012 Express
      ネットワークの構成


●SQL Server 2012 Express
      ログインユーザの作成


●SQL Server 2012 Express
      データベースの作成


●SQL Server 2012 Express
      テーブルの作成


●SQL Server 2012 Express
      SQLの実行


●復旧モデルとバックアップ

↓ 番外編 ↓
●Windows Server 2012 評価版
      インストール


●Windows Server 2012
      スタートメニュー利用方法


●Windows Server 2012
      シャットダウン・再起動方法


●Windows Server 2012
      サーバーマネージャ自動起動無効


●Windows Server 2012
      コンピュータ名・ドメイン変更


副問い合わせ(サブクエリ)



SELECT、INSERT、UPDATE、DELETEなどのSQL文内に、
入れ子としてSELECT句を記述することができます。
この入れ子のクエリを副問い合わせ(サブクエリ)と呼びます。
サブクエリはSELECT句の抽出項目やテーブル名、WHEREの条件部分など
様々な場所に記述することができます。

なお、副問い合わせのSELECT文で主問い合わせのテーブルの列を参照する
「相関副問い合わせ」については別項で説明します。


***例(SELECTの抽出項目として利用)***
[売上表]
商品名 売上数量 売上金額
りんご 3 300
みかん 8 960
ぶどう 10 500


[実行SQL]
SELECT
  商品名,
  売上数量,
  (SELECT
    SUM(売上数量)
   FROM
    売上表
  ) AS 総売上数
FROM
  売上表

*※抽出項目として利用する場合、複数行を取得する副問い合わせはエラーとなります


[結果]
商品名 売上数量 総売上数
りんご 3 21
みかん 8 21
ぶどう 10 21


***例(テーブルとして利用)***
[売上表]
売上日 商品名 売上数量 売上金額
2013/01/01 りんご 3 300
2013/01/01 みかん 8 960
2013/01/01 ぶどう 10 500
2013/01/02 りんご 5 500
2013/01/02 みかん 2 240
2013/01/02 ぶどう 4 200


[実行SQL]
SELECT
  MAX(集計.売上計) AS 最大売上計
FROM
  (SELECT
     商品名,
     SUM(売上数量) AS 売上計,
   FROM
     売上表
   GROUP BY
     商品名
  ) 集計


[結果]
最大売上計
14


***例(条件として利用)***
[売上表]
売上日 商品名 売上数量 売上金額
2013/01/01 りんご 3 300
2013/01/01 みかん 8 960
2013/01/01 ぶどう 10 500
2013/01/02 りんご 5 500
2013/01/02 みかん 2 240
2013/01/02 ぶどう 4 200


[実行SQL]
SELECT
  *
FROM
  売上表
WHERE
  売上金額 = (SELECT
          MAX(売上金額)
        FROM
          売上表
        )

*等号や不等号などの演算子を用いた条件として利用する場合、
複数行を取得する副問い合わせはエラーとなります

[結果]
売上日 商品名 売上数量 売上金額
2013/01/01 みかん 8 960


***例(エラーとなる例)***
[売上表]
売上日 商品名 売上数量 売上金額
2013/01/01 りんご 3 300
2013/01/01 みかん 8 960
2013/01/01 ぶどう 10 500
2013/01/02 りんご 5 500
2013/01/02 みかん 2 240
2013/01/02 ぶどう 4 200

上記の表に対し、以下のようなSQL文を発行した場合はエラーとなります。

[抽出項目として利用される場合で、副問い合わせが複数行を返す]
SELECT
  商品名, 売上数量,
  (SELECT 売上数量 FROM 売上表) AS 総売上数
FROM
  売上表

[抽出項目として利用される場合で、副問い合わせが複数列を返す]
SELECT
  商品名, 売上数量,
  (SELECT SUM(売上数量), SUM(売上金額) FROM 売上表) FROM
  売上表

[等号や不等号などの演算子を用いた条件として利用する場合で、副問い合わせが複数列を返す]
SELECT
  *
FROM
  売上表
WHERE
  売上金額 = (SELECT 売上金額 FROM 売上表)

*上記のように一致を条件とする場合であれば、IN句を利用するとよい

SELECT
  *
FROM
  売上表
WHERE
  売上金額 IN (SELECT 売上金額 FROM 売上表)

<<PR>> ネットワークセキュリティを見直しませんか
価格:300円
現役SEが語るSEの仕事あれこれ-これから就職を希望する人へ-
価格:300円