JOIN演算子を応用してみる。
num | name |
---|---|
1 | A教室 |
2 | B教室 |
3 | C教室 |
num | name |
---|---|
1 | 午前 |
2 | 午後 |
3 | 夕方 |
num | name |
---|---|
1 | 田中 |
2 | 鈴木 |
3 | 佐藤 |
rnum | tnum | snum |
---|---|---|
1 | 2 | 3 |
2 | 3 | 1 |
3 | 1 | 2 |
次のSQLをファイルとして作成。(room_setup131.sql)
oddtbs=> \i room_setup131.sql ... oddtbs=> select * from room; num | name -----+-------- 1 | A教室 2 | B教室 3 | C教室 (3 rows)
次のSQLをファイルとして作成。(time_setup131.sql)
oddtbs=> \i time_setup131.sql ... oddtbs=> select * from time; num | name -----+------ 1 | 午前 2 | 午後 3 | 夕方 (3 rows)
次のSQLをファイルとして作成。(staff_setup131.sql)
oddtbs=> \i staff_setup131.sql ... oddtbs=> select * from staff; num | name -----+------ 1 | 田中 2 | 鈴木 3 | 佐藤 (3 rows)
次のSQLをファイルとして作成。(assign_setup131.sql)
oddtbs=> \i assign_setup131.sql ... oddtbs=> select * from assign; rnum | tnum | snum ------+------+------ 1 | 2 | 3 2 | 3 | 1 3 | 1 | 2 (3 rows)
JOINを使用しない例
・次のように割り当てを名前で表示するビューを定義する。
room | time | staff |
---|---|---|
A教室 | 午後 | 佐藤 |
B教室 | 夕方 | 田中 |
C教室 | 午前 | 鈴木 |
・次のSQLをファイルとして作成。(assign_view131.sql)
・ログイン画面から実行
oddtbs=> \i assign_view131.sql ... oddtbs=> select * from assign_v1; room | time | staff --------+------+------- A教室 | 午後 | 佐藤 B教室 | 夕方 | 田中 C教室 | 午前 | 鈴木 (3 rows)
JOINを使用した例①
・上記と同じ内容のビュー(assign_v2)をJOINを使用して定義する。
・次のSQLをファイルとして作成。(assign_view132.sql)
・ログイン画面から実行
oddtbs=> \i assign_view132.sql ... oddtbs=> select * from assign_v2; room | time | staff --------+------+------- A教室 | 午後 | 佐藤 B教室 | 夕方 | 田中 C教室 | 午前 | 鈴木 (3 rows)
JOINを使用した例②
・次のように教室と時間帯の全ての組み合わせを表示するビューを定義する。
room | time | staff |
---|---|---|
A教室 | 午前 | |
A教室 | 午後 | 佐藤 |
A教室 | 夕方 | |
B教室 | 午前 | |
B教室 | 午後 | |
B教室 | 夕方 | 田中 |
C教室 | 午前 | 鈴木 |
C教室 | 午後 | |
C教室 | 夕方 |
・次のSQLをファイルとして作成。(assign_view133.sql)
・ログイン画面から実行
oddtbs=> \i assign_view133.sql ... oddtbs=> select * from assign_v3; room | time | staff --------+------+------- A教室 | 午前 | A教室 | 午後 | 佐藤 A教室 | 夕方 | B教室 | 午前 | B教室 | 午後 | B教室 | 夕方 | 田中 C教室 | 午前 | 鈴木 C教室 | 午後 | C教室 | 夕方 | (9 rows)
・教室と時間帯の行を追加してから確認
oddtbs=> insert into room values(4, 'D教室'); ... oddtbs=> insert into time values(4, '夜間'); ... oddtbs=> select * from assign_v3; room | time | staff --------+------+------- A教室 | 午前 | A教室 | 午後 | 佐藤 A教室 | 夕方 | A教室 | 夜間 | B教室 | 午前 | B教室 | 午後 | B教室 | 夕方 | 田中 B教室 | 夜間 | C教室 | 午前 | 鈴木 C教室 | 午後 | C教室 | 夕方 | C教室 | 夜間 | D教室 | 午前 | D教室 | 午後 | D教室 | 夕方 | D教室 | 夜間 | (16 rows) 教室と時間帯に関して全ての組み合わせが表示されている。