1月22日(金)2コマ目
今日、やったこと
確認テスト(おもにview)
今日の確認テスト
解答例をあげときます。
問1
とくにややこしいところはないと思います。
CREATE OR REPLACE VIEW 蔵書一覧(蔵書ID, 蔵書名, ジャンル名)
AS
SELECT 蔵書マスタ.ID, 蔵書マスタ.タイトル, ジャンルマスタ.ジャンル名
FROM 蔵書マスタ, ジャンルマスタ
WHERE 蔵書マスタ.ジャンルID = ジャンルマスタ.ID;
問2
未返却=返却日列がnull です。
ヒントに書いてますが、「xx列がnull」はwhere句で xx is null です。nullか否かの判断には残念ながら=は使えません。
create or replace view 貸出中一覧(貸出ID, 会員名, 蔵書名, 貸出日)
as
select 貸出.ID, 会員マスタ.名前, 蔵書マスタ.タイトル, 貸出詳細.貸出日
from 蔵書マスタ, 会員マスタ, 貸出, 貸出詳細
where 会員マスタ.ID=貸出.会員ID and 貸出.ID=貸出詳細.貸出ID and
蔵書マスタ.ID=貸出詳細.蔵書ID and
貸出詳細.返却日 is null;
問3
またまた未返却が出てきます。
create or replace view ジャンル別貸出中蔵書数(ジャンル名, 貸出冊数)
as
select ジャンルマスタ.ジャンル名, count(*)
from ジャンルマスタ, 蔵書マスタ, 貸出詳細
where ジャンルマスタ.ID=蔵書マスタ.ジャンルID and
蔵書マスタ.ID=貸出詳細.蔵書ID and 返却日 is null
group by ジャンルマスタ.ジャンル名;
問4
create or replace view 会員別貸出中蔵書数(会員名, 貸出蔵書冊数)
as
select 会員マスタ.名前, count(*)
from 会員マスタ, 貸出, 貸出詳細
where 会員マスタ.ID=貸出.会員ID and 貸出.ID=貸出詳細.貸出ID
group by 会員マスタ.名前;
問5
create or replace view 蔵書別貸出回数(蔵書名, 貸出回数)
as
select 蔵書マスタ.タイトル, count(*)
from 蔵書マスタ, 貸出詳細
where 蔵書マスタ.ID=貸出詳細.蔵書ID
group by 蔵書マスタ.タイトル;
問6
おまけ count()の動き
| ID | 商品名 | 定価 |
|---|---|---|
| 1 | うどん | 500円 |
| 2 | 冷やし中華 | |
| 3 | カレーうどん | 700円 |
| 4 | なべ焼きうどん | 1000円 |
| 5 | 冷やしうどん |
①count(*)
②count(ID)
③count(定価)
- count(列名)は指定列の値がnullではない行数を数えます。
- count(*)は行の各列の値が1つでもnullではない行数を数えます。
コメント