在数据库操作中,嵌套子查询(涉及不同表)是常见的数据查询需求。将演示如何获取购买了红双喜牌乒乓球拍的订单信息,包括订单号订单时间以及订单总金额

数据表结构:

  • goods 表:包含商品的 g_id(商品ID)和 g_name(商品名称)
  • ordetails 表:包含订单明细的 g_id(商品ID)和 o_id(订单ID)
  • orders 表:包含订单的 o_id(订单ID)、 o_date(订单日期)、 o_sum(订单总金额)

查询代码解析:

以下 SQL 代码查询购买了“红双喜牌乒乓球拍”的订单信息:

SELECT o_id, o_date, o_sum
FROM orders
WHERE o_id IN (
    SELECT o_id
    FROM ordetails
    WHERE g_id IN (
        SELECT g_id
        FROM goods
        WHERE g_name = '红双喜牌乒乓球拍'
    )
);

查询流程解析:

  1. 内层查询 (goods 表):筛选商品名称为“红双喜牌乒乓球拍”的 g_id
  2. 中间查询 (ordetails 表):通过商品 ID 查询对应的订单 ID o_id
  3. 外层查询 (orders 表):获取符合订单 ID 的 订单号、日期和总金额信息。

总结

通过嵌套子查询可以跨表精准地获取指定商品的订单信息,提高数据分析效率。