题目
分析
首先要得到销售人员的姓名那么只能查销售人员表,没有与RED公司相关订单,人与订单之间,所以再与订单表连接,因为销售表的范围是比较大的,所以为了保留那些没有进行订单的员工姓名应该采用左外连接,又要求是RED公司,所以再与公司表连接,虽然公司表范围肯定大,但我们只想得到RED公司所以内连接即可。
题解
直接上去写了select SP.name from SalesPerson SP left join Orders o on SP.sales_id=o.sales_id inner join Company c on o.com_id=c.com_id where c.name="RED"
这个肯定是错误的,原因是因为这个查出来的是交易过的名单,参考题解发现可以使用子查询,查出做过订单的员工id再通过in
真正的答案
select SP.name from SalesPerson SP where sales_id not in ( select sales_id from Orders o inner join Company c on o.com_id=c.com_id where c.name="RED" )