利用子查询进行过滤
首先来看一看需求:列出订购物品TNT2的所有客户。
但是订单号、客户ID、订单日期储存于orders表中;orders表不储存客户信息,它只储存客户的ID,实际的客户信息储存在customers表中。
orders表:
orderitems表:
customers表:
检索具体步骤为:
(1)从orderitems表中检索包含物品TNT2的所有订单的编号;
(2)从orders表中检索具有前一步骤列出的订单编号的所有客户的ID;
(3)从customers检索前一步骤返回的所有客户ID的客户信息。
1、第一步:
输入
SELECT order_num FROM orderitems WHERE prod_id = 'TNT2';
输出
2、第二步
输入
SELECT cust_id FROM orders WHERE order_num IN (20005,20007);
输出
3、现在,把第一个查询变为子查询:
输入
SELECT cust_id FROM orders WHERE order_num IN (SELECT order_num FROM orderitems WHERE prod_id = 'TNT2');
输出
4、
输入
SELECT cust_name,cust_contact FROM customers WHERE cust_id IN (SELECT cust_id FROM orders WHERE order_num IN (SELECT order_num FROM orderitems WHERE prod_id = 'TNT2'));
输出