Skip to content
-- Active: 1739250781633@@127.0.0.1@3090@my_shop

# 子查询
# 子查询只能查出单列

# 从内到外执行
# 订购了'RGAN01'产品的客户的姓名和联系方式
# 从订单明细查出订单号 -> 从订单表查出客户号 -> 从客户表查出客户信息 
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 = 'RGAN01'
  )
)


# 计算字段使子查询

SELECT cust_name,
      cust_state,
      (
        SELECT COUNT(*) 
        FROM Orders
        WHERE Orders.cust_id = Customers.cust_id
      ) AS orders
FROM Customers
ORDER BY cust_name;




## 章节题解

SELECT cust_id, cust_name FROM Customers WHERE cust_id IN (
  SELECT cust_id FROM Orders WHERE order_num IN (
    SELECT order_num FROM OrderItems WHERE item_price >= 10
  )
);

SELECT order_num, cust_id, order_date FROM Orders WHERE order_num IN (
  SELECT order_num FROM OrderItems WHERE prod_id = 'BR01'
) ORDER BY order_date;


SELECT cust_email FROM Customers WHERE cust_id in (
  SELECT cust_id FROM Orders WHERE order_num IN (
    SELECT order_num FROM OrderItems WHERE prod_id = 'BR01'
  )
);



SELECT cust_id,
  SUM((
    SELECT SUM(quantity * item_price) FROM OrderItems 
    WHERE Orders.order_num = OrderItems.order_num
  )) AS total_ordered
 FROM Orders GROUP BY cust_id;


 SELECT cust_id,
    (
      SELECT SUM(quantity * item_price) FROM OrderItems
      WHERE order_num IN (
        SELECT order_num FROM Orders
        WHERE Orders.cust_id = Customers.cust_id
      )
    ) AS total_ordered
 FROM Customers;


SELECT prod_name, (
  SELECT SUM(quantity) FROM OrderItems
  WHERE OrderItems.prod_id = Products.prod_id
) AS quant_sold FROM Products;