本文共 1758 字,大约阅读时间需要 5 分钟。
要求:给定 3 个表: salesperson, company, orders,输出所有表 salesperson 中,没有向公司 ‘RED’ 销售任何东西的销售员。
salesperson表:
+----------+------+--------+-----------------+-----------+| sales_id | name | salary | commission_rate | hire_date |+----------+------+--------+-----------------+-----------+| 1 | John | 100000 | 6 | 4/1/2006 || 2 | Amy | 120000 | 5 | 5/1/2010 || 3 | Mark | 65000 | 12 | 12/25/2008|| 4 | Pam | 25000 | 25 | 1/1/2005 || 5 | Alex | 50000 | 10 | 2/3/2007 |+----------+------+--------+-----------------+-----------+表 salesperson 存储了所有销售员的信息。每个销售员都有一个销售员编号 sales_id 和他的名字 name 。
company表:
+---------+--------+------------+| com_id | name | city |+---------+--------+------------+| 1 | RED | Boston || 2 | ORANGE | New York || 3 | YELLOW | Boston || 4 | GREEN | Austin |+---------+--------+------------+表 company 存储了所有公司的信息。每个公司都有一个公司编号 com_id 和它的名字 name 。
orders表:
+----------+------------+---------+----------+--------+| order_id | order_date | com_id | sales_id | amount |+----------+------------+---------+----------+--------+| 1 | 1/1/2014 | 3 | 4 | 100000 || 2 | 2/1/2014 | 4 | 5 | 5000 || 3 | 3/1/2014 | 1 | 1 | 50000 || 4 | 4/1/2014 | 1 | 4 | 25000 |+----------+----------+---------+----------+--------+表 orders 存储了所有的销售数据,包括销售员编号 sales_id 和公司编号 com_id 。
分析:
1.先在company表中找到’RED’公司的编号,然后通过编号找到orders表中对应的sales_id 2.在salesperson表中找到不在这些sales_id中的sales_id对应的销售员的姓名SQL语句:
select name from salespersonwhere sales_id not in(select o.sales_idfrom orders ojoin company con c.com_id=o.com_idand c.name='RED');
转载地址:http://ernhz.baihongyu.com/