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円