|
相関副問い合わせ(相関サブクエリ)
副問い合わせのSELECT文で主問い合わせのテーブルの列を参照するものを
相関副問い合わせ(相関サブクエリ)といいます。
また、特に自テーブルと結合した相関副問い合わせを
自己相関副問い合わせ(自己相関サブクエリ)といいます。
***例1(相関サブクエリ)***
例1では、売上表から単価が100円以上のデータを取得します。
[売上表]
商品名 |
売上数量 |
売上金額 |
りんご |
3 |
300 |
みかん |
8 |
960 |
ぶどう |
10 |
500 |
|
[商品単価]
商品名 |
単価 |
りんご |
100 |
みかん |
120 |
ぶどう |
50 |
|
[実行SQL]
SELECT
*
FROM
売上表
WHERE
(SELECT
単価
FROM
商品単価
WHERE
売上表.商品名 = 商品単価.商品名
) >= 100
|
[結果]
商品名 |
売上数量 |
売上金額 |
りんご |
3 |
300 |
みかん |
8 |
960 |
***例2(自己相関サブクエリ)***
例2では、売上表から売上数量が同商品売上の平均以上のデータを取得します。
[売上表]
売上日 |
商品名 |
売上数量 |
売上金額 |
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 |
ぶどう |
12 |
600 |
2013/01/02 |
バナナ |
1 |
200 |
2013/01/03 |
みかん |
5 |
600 |
2013/01/03 |
バナナ |
1 |
200 |
[実行SQL]
SELECT
U1.*
FROM
売上表 U1
WHERE
U1.売上数量 >= (SELECT
AVG(U2.売上数量)
FROM
売上表 U2
WHERE
U1.商品名 = U2.商品名
)
|
[結果]
売上日 |
商品名 |
売上数量 |
売上金額 |
2013/01/01 |
みかん |
8 |
960 |
2013/01/02 |
りんご |
5 |
500 |
2013/01/02 |
ぶどう |
12 |
600 |
2013/01/02 |
バナナ |
1 |
200 |
2013/01/03 |
みかん |
5 |
600 |
2013/01/03 |
バナナ |
1 |
200 |
|
<<PR>>
価格:300円
価格:300円
|