課題一覧

  1. 生産表の全てのデータと製品表のS7 を除く全てのデータを、意味をもたせたまま(すなわちCROSS JOIN せず) 組み合わせて工場番号順に表示させなさい。ただしWHERE 句にprod_id に関する条件を書かないこと。
  2. 生産表の全てのデータと製品表のS7 を含めた全てのデータを、意味をもたせたまま(すなわちCROSS JOIN せず) 組み合わせたものについて製品番号、製品名、価格、工場番号、生産量、工場住所(prod_id,name, price, fact_id, prod_qty, fact_address) を工場番号順に表示させなさい。ただしWHERE 句にprod_id に関する条件を書かないこと。
  3. 生産中(seihin.condition が0) である製品のみの在庫状況(製品番号、在庫量、倉庫住所) を、意味のあるデータとして(すなわちCROSS JOIN をせずに) 表示させなさい。ただしWHERE 句にprod_idに関する条件を書かないこと。
  4. 全ての製品(S7 も含む) の在庫状況(製品番号、在庫量、倉庫住所) を表示させなさい。
  5. 神奈川で一番多く生産されている製品よりも多く生産されている(工場の場所は問わない) 製品の製品番号とそれを在庫している倉庫の倉庫番号(stor_id) を限定述語を用いて求めなさい。
  6. 神奈川で一番多く生産されている製品よりも多く生産されている(工場の場所は問わない) 製品の製品番号とそれを在庫している倉庫の倉庫番号をEXISTS 述語を用いて求めなさい。
  7. 現在の日付と時刻をSELECT 文で表示させなさい。
  8. 自分が生まれた日時(時刻が分からなければ00:00 とする) から今この瞬間まで何年、あるいは何日、あるいは何秒が経過しているかそれぞれ表示させなさい(負の数にならないように気をつけること)。
  9. 製品名を全て大文字にして重複なく取り出しなさい。
  10. 製品表の全データを製品名の長い順に(ソート)表示させなさい。

解答一覧

1.生産表の全てのデータと製品表のS7 を除く全てのデータを、意味をもたせたまま(すなわちCROSS JOIN せず) 組み合わせて工場番号順に表示させなさい。ただしWHERE 句にprod_id に関する条件を書かないこと。

構文例:SELECT * FROM seihin JOIN seisan
ON seihin.prod_id=seisan.prod_id
ORDER BY fact_idseihin

2.生産表の全てのデータと製品表のS7 を含めた全てのデータを、意味をもたせたまま(すなわちCROSS JOIN せず) 組み合わせたものについて製品番号、製品名、価格、工場番号、生産量、工場住所(prod_id,name, price, fact_id, prod_qty, fact_address) を工場番号順に表示させなさい。ただしWHERE 句にprod_id に関する条件を書かないこと。

構文例:SELECT seihin.prod_id, name, price, fact_id, prod_qty, fact_address
FROM seihin LEFT OUTER JOIN seisan
ON seihin.prod_id=seisan.prod_id
ORDER BY fact_id

3.生産中(seihin.condition が0) である製品のみの在庫状況(製品番号、在庫量、倉庫住所) を、意味のあるデータとして(すなわちCROSS JOIN をせずに) 表示させなさい。ただしWHERE 句にprod_idに関する条件を書かないこと。

構文例:SELECT seihin.prod_id,zaiko.stoc_qty,stor_address
FROM seihin JOIN zaiko ON zaiko.prod_id=seihin.prod_id WHERE seihin.condition='0'

4.全ての製品(S7 も含む) の在庫状況(製品番号、在庫量、倉庫住所) を表示させなさい。

構文例:SELECT seihin.prod_id,zaiko.stoc_qty,stor_address
FROM seihin LEFT OUTER JOIN zaiko ON seihin.prod_id=zaiko.prod_id

5.神奈川で一番多く生産されている製品よりも多く生産されている(工場の場所は問わない) 製品の製品番号とそれを在庫している倉庫の倉庫番号(stor_id) を限定述語を用いて求めなさい。

構文例:SELECT seisan.prod_id,zaiko.stor_id
FROM seisan JOIN zaiko ON seisan.prod_id=zaiko.prod_id WHERE prod_qty > ALL(SELECT prod_qty FROM seisan WHERE fact_address =
'Kanagawa')

6.神奈川で一番多く生産されている製品よりも多く生産されている(工場の場所は問わない) 製品の製品番号とそれを在庫している倉庫の倉庫番号をEXISTS 述語を用いて求めなさい。

構文例:SELECT x.prod_id, stor_id
	FROM seisan x JOIN zaiko ON x.prod_id=zaiko.prod_id
	WHERE NOT EXISTS
	(SELECT * FROM seisan y 
		WHERE x.prod_qty <= y.prod_qty
		AND fact_address = 'Kanagawa')

7.現在の日付と時刻をSELECT 文で表示させなさい。

構文例:SELECT CURRENT_TIMESTAMP AS 'Now Time'
もしくは、
SELECT GETDATE()

8.自分が生まれた日時(時刻が分からなければ00:00 とする) から今この瞬間まで何年、あるいは何日、あるいは何秒が経過しているかそれぞれ表示させなさい(負の数にならないように気をつけること)。

構文例:何年:SELECT DATEDIFF(year, '1974-2-2 8:15', CURRENT_TIMESTAMP) AS 'Year after Birth'
何日:SELECT DATEDIFF(day, '1974-2-2 8:15', CURRENT_TIMESTAMP) AS 'Day after Birth'
何秒:SELECT DATEDIFF(second, '1974-2-2 8:15', CURRENT_TIMESTAMP) AS 'Second after Birth'

9.製品名を全て大文字にして重複なく取り出しなさい。

構文例:SELECT DISTINCT UPPER(name) AS 'NAME' FROM seihin

10.製品表の全データを製品名の長い順に(ソート)表示させなさい。

構文例:SELECT * FROM seihin ORDER BY LEN(name)DESC