解答例 - 実習課題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;

