副問合せの作り方
miura
副問合せでは、まず括弧内から作成していきましょう。問18「商品番号‘’を注文した顧客の顧客名と住所を表示する」の作り方
1.「商品番号‘PX0’を注文した顧客」を副問合せで作る
SELECT 顧客番号 FROM 受注明細表
WHERE 商品番号 = ‘PX0’
2.「顧客の顧客名と住所を表示する」を作る(主問合せ)
SELECT 顧客名,顧客住所 FROM 顧客表
3.主問合せと副問合せをくっつける
SELECT 顧客名,顧客住所 FROM 顧客表
WHERE {?}
(SELECT 顧客番号 FROM 受注明細表
WHERE 商品番号 = ‘PX0’)
ここで{?}に何を入れるかですが、副問合せのSELECTで指定した列名と同じものがWHEREの列名で入ります。(これは結合と同じで、受注明細表と顧客表を顧客番号で結合するときのキーと同じです)そして、IN述語は「副問合せで選択された顧客番号のいずれか 」という条件で指定されます。
答え
SELECT 顧客名,顧客住所 FROM 顧客表
WHERE 顧客番号
IN (SELECT 顧客番号 FROM 受注明細表
WHERE 商品番号 = ‘PX0’)
Posted in データベース |
No Comments »
用事があり早退したので、今日のプリントの答えをWebで掲載していただけないでしょうか。
miura
答えは次回の10月11日に配布します。Webにはそれ以降に掲載します。よろしくお願いします。
Posted in データベース |
No Comments »
問11はCOUNT 商品番号では間違いですか?
miura
COUNT関数は括弧内はなんの列名でもかまいません。括弧つけてくださいね^^
COUNT(商品番号)でも大丈夫です。
一般的にはCOUNT(*)を使うことが多いです。
Posted in データベース |
No Comments »
“○○ごと”とある場合にGROUP BYを使うんですか?
miura
そうです。「商品番号ごと・・・」「顧客番号ごと・・・」などの記述が出てきたときは、GROUP BYでグループ化します。
Posted in データベース |
No Comments »
GROUP BYにはASのあとの列名を書かなくていいんですか?
miura
ASはSELECTで別名を指定するときに使います。ASは別名なので、GROUP BYには指定できません。
Posted in データベース |
No Comments »
SQLの表の見方、今回は全然わからなくて焦った。
miura
来週はSQL特訓さー。みんな、まだ経験が足らんけん、もっとSQLやらんといけんね。
Posted in データベース, 午後対策 |
No Comments »
SQLは何を求めるものなのですか?条件をつけて新しく表をデータから取り出すことでいいんですか?
miura
そうです。それでいいんです。これはMicrosoftのAccessでもできます。来週実際にSQLでデータと取り出す練習をしてみましょう。
Posted in その他, データベース |
No Comments »
問4のSQLが難しい。
miura
これは難しい問題です。でも、SQLにもっと慣れれば解けるようになります。というわけで来週はSQLの特訓です。活目せよ!
Posted in データベース, 午後対策 |
No Comments »
問4のSQLがあまりわからなかったです。
miura
今回の講義で、みなさんSQLの苦手がわかりましたので、来週はSQLの特訓をします。
Posted in データベース, 午後対策 |
No Comments »