回答編集履歴
3
追記
answer
CHANGED
@@ -38,6 +38,12 @@
|
|
38
38
|
|
39
39
|
追記2
|
40
40
|
--
|
41
|
+
> 皆さんの回答を見て、勘違いされているようなので追記します。
|
42
|
+
|
43
|
+
「サブクエリでおおもとのクエリのエイリアスを使った時のエラーを説明して下さい。」
|
44
|
+
タイトルが、勘違いの元です。
|
45
|
+
そもそも、p.というのはエイリアスではなくて修飾子と言います。
|
46
|
+
|
41
47
|
> 内部でどのような処理が行われて、サブクエリでどのようなテーブルが呼び出されたのでしょうか。
|
42
48
|
|
43
49
|
サブクエリー内でfrom句に記述されたテーブル等を参照するものを、相関サブクエリー(相関副問合せ)と云います。
|
2
追記
answer
CHANGED
@@ -34,4 +34,14 @@
|
|
34
34
|
from player
|
35
35
|
where teamNo = 2 and uniformNo=5
|
36
36
|
)
|
37
|
-
```
|
37
|
+
```
|
38
|
+
|
39
|
+
追記2
|
40
|
+
--
|
41
|
+
> 内部でどのような処理が行われて、サブクエリでどのようなテーブルが呼び出されたのでしょうか。
|
42
|
+
|
43
|
+
サブクエリー内でfrom句に記述されたテーブル等を参照するものを、相関サブクエリー(相関副問合せ)と云います。
|
44
|
+
|
45
|
+
相関副問合せでは、参照される側(fromにある記述)が先実行されてから、参照する側が実行されます。
|
46
|
+
参照される側1件に対して都度実行されるのが基本です。
|
47
|
+
オプチマイザや内容によって事前に抽出が行われる事もあるでしょうし、どのような実行順序となっているかは、実行計画で確認する方が良いでしょう。
|
1
追記
answer
CHANGED
@@ -16,4 +16,22 @@
|
|
16
16
|
where p.teamNo = 2 and p.uniformNo=5
|
17
17
|
)
|
18
18
|
```
|
19
|
-
但し、それはサブクエリーが`positionNo`を1パターンしか返さない場合だけです。
|
19
|
+
但し、それはサブクエリーが`positionNo`を1パターンしか返さない場合だけです。
|
20
|
+
|
21
|
+
追記
|
22
|
+
---
|
23
|
+
> やろうとしたことはチーム番号2、背番号5の人と同じポジションの人のチーム名、ポジション名、背番号、選手名を取得することです。
|
24
|
+
|
25
|
+
それなら、サブクエリーが相関になっているのはおかしいです。
|
26
|
+
以下なら`=`でもエラーにならないと思います。
|
27
|
+
```SQL
|
28
|
+
select teamName , positionName ,uniformNo ,playerName
|
29
|
+
from player p
|
30
|
+
join team using(teamNo)
|
31
|
+
join position1 using(PositionNo)
|
32
|
+
where positionNo =(
|
33
|
+
select positionNo
|
34
|
+
from player
|
35
|
+
where teamNo = 2 and uniformNo=5
|
36
|
+
)
|
37
|
+
```
|