11.2 利用子查询进行过滤
SELECT cust_name, cust_contact FROM Customers WHERE cust_id IN (SELECT cust_id FROM Order WHERE order_num IN (SELECT order_num FROM OrderItems WHERE prod_id = 'RGAN01'));
11.3 作为计算字段使用子查询使用子查询的另一方法是创建计算字段。假如需要显示Customers表中每个顾客的订单总数。订单与相应的顾客ID存储在Orders表中。
执行这个操作,要遵循下面的步骤:
从Customers表中检索顾客列表;
对于检索出的每个顾客,统计其在Orders表中的订单数目。
正如前两课所述,可以使用SELECT COUNT(*)对表中的行进行计数,并且通过提供一条WHERE子句来过滤某个特定的顾客ID,仅对该顾客的订单进行计数。例如,下面的代码对顾客1000000001的订单进行计数:
输入▼
SELECT COUNT(*) AS orders
FROM Orders
WHERE cust_id = '1000000001';
要对每个顾客执行COUNT(*),应该将它作为一个子查询。请看下面的代码:
输入▼
SELECT cust_name,
cust_state,
(SELECT COUNT(*)
FROM Orders
WHERE Orders.cust_id = Customers.cust_id) AS orders
FROM Customers
ORDER BY cust_name;