【问题标题】:How to perform an Inner join on a result set of another sql query?如何对另一个 sql 查询的结果集执行内连接?
【发布时间】:2017-01-05 10:06:00
【问题描述】:

我想使用下表提取过去两个月的数据: 我已经走到这一步了:

select * from requests r INNER JOIN request_status rs ON r.id = rs.request_id where r.customer_id = <some-customer-id> AND r.created_time_stamp BETWEEN '2016-011-01 00:00:00.000000' AND '2017-01-05 00:00:00.000000' limit 10

问题是我不确定如何在上述查询的结果集上放置另一个内部连接。我必须实现的是对上述查询的结果集执行内部连接,并从该结果集中提取一些数据。有什么帮助吗?

  1. 请求:

+-----+--------------------+ | id | created_time_stamp | +-----+--------------------+ | 123 | 12:23:00 | +-----+--------------------+

  1. 请求状态:

+----+------------+-------------+ | id | request_id | customer_id | +----+------------+-------------+ | 12 | 123 | 3453 | +----+------------+-------------+

  1. request_process :

+----+-------------+------------+ | id | customer_id | process_id | +----+-------------+------------+ | 12 | 3453 | 23 | +----+-------------+------------+

编辑 1:

请考虑以下带有冒号后列出的字段的表格:

  1. push_requests:id、customer_id、created_time_stamp
  2. push_status : id, request_id
  3. 订阅者:id、customer_id、is_inactive

注意:push_status 中的 request_id 是 push_request id 的外键

我想在查询中实现什么:

  1. 从 push_requests 中提取记录,其中 customer_id A 在某某 created_time_stamp 之间。
  2. 将其与基于外键的 push_status 表连接。
  3. 将步骤 1 和 2 的结果集与订阅表连接起来。

我期待什么输出:最终结果集包含一整行 push_requests、push_status 和一个显示 is_inactive 值为 0 的订阅者数量的附加列。

【问题讨论】:

  • 您需要对当前查询进行哪些修改?
  • 我想对上述查询的结果集进行内连接。
  • 如果你使用 sql server 使用 CTE ,docs here
  • 好的...但是您想加入哪个表?
  • 基于customer_id字段的request_process上面列出的第三张表。

标签: mysql sql


【解决方案1】:

我不明白为什么您不能在查询中添加另一个连接条件,以连接到 request_process 表:

SELECT *
FROM requests r
INNER JOIN request_status rs
    ON r.id = rs.request_id
INNER JOIN request_process rp
    ON rs.customer_id = rp.customer_id
WHERE r.customer_id = <some-customer-id> AND
      r.created_time_stamp BETWEEN '2016-01-01 00:00:00.000000' AND
                                   '2017-01-05 00:00:00.000000'
LIMIT 10

请注意,我更正了时间戳 '2016-01-01 00:00:00.000000' 中的错字。

【讨论】:

  • 查询出了点问题,它抛出了十次相同的行。
  • 这不是同一行,而且您从未向我们提供任何示例数据或输出,这可能是投票失败的原因。你期望的输出是什么?
  • 很公平,会在一​​段时间内更新问题。我已经纠正了错字。
猜你喜欢
  • 2023-02-07
  • 2010-10-31
  • 2018-10-17
  • 2017-11-14
  • 2018-04-29
  • 2016-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多