解答例 - 実習課題2 - 8. クエリの結合
実習課題 2
販売管理データベースから、顧客に対する販売を担当した従業員が所属する営業所と、顧客を管理する営業所が同じかどうかを調べる目的で、顧客名、顧客を管理する営業所名、顧客に販売を担当した従業員名、その従業員が所属する営業所を表示させる SQL 文を記述しなさい。ただし、表示する顧客は担当従業員が所属する営業所と、顧客を管理する営業所が異なるもののみを表示するものとする。
解答例
SELECT c.c_name AS 顧客名, co.office AS 顧客管理営業所名, e.e_name AS 販売従業員名, eo.office AS 販売営業所名 FROM ( SELECT a.c_num, c.office AS c_office, a.employee, e.office AS e_office FROM accept_order a JOIN customer c ON a.c_num = c.c_num JOIN employee e ON a.employee = e.e_num EXCEPT SELECT a.c_num, e.office, a.employee, c.office FROM accept_order a JOIN customer c ON a.c_num = c.c_num JOIN employee e ON a.employee = e.e_num ) data JOIN customer c ON data.c_num = c.c_num JOIN office co ON data.c_office = co.o_num JOIN employee e ON data.employee = e.e_num JOIN office eo ON data.e_office = eo.o_num;