You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多关联表SQL查询:获取INV表字段及关联表最早审批日期

解决方案

按照你的需求,这里是填充好子查询后的完整SQL语句:

SELECT INV.Aa, INV.Bb, INV.Cc, S.EarliestApprovedDate
FROM INV
LEFT JOIN (
    -- 子查询:关联所有表,筛选并获取每个库存对应的最早审批日期
    SELECT
        S.InventoryId, -- 对应INV.ID的关联字段
        MIN(T.Date) AS EarliestApprovedDate
    FROM B
    INNER JOIN S ON B.sID = S.sID
    INNER JOIN T ON S.sID = T.sID
    INNER JOIN T_Lookup ON T.tID = T_Lookup.tID
    WHERE
        B.bID = MyID
        AND B.SomeOtherColumn = 1
        AND T_Lookup.Type = 'Approved'
    GROUP BY S.InventoryId
) S ON INV.ID = S.InventoryId

逻辑说明:

  • 从表B筛选出匹配MyID且SomeOtherColumn=1的sID
  • 关联表S拿到对应的库存ID(InventoryId),由于sID和INV.ID是一对一关系,分组后不会出现重复结果
  • 关联表T和T_Lookup,仅保留Type为"Approved"的记录
  • 用MIN(T.Date)获取每个库存对应的最早审批日期,按InventoryId分组确保每个库存仅返回一条结果

补充说明:

根据你提到的每个sID至少有一条"Approved"记录的前提,当前用INNER JOIN就能保证所有符合条件的库存都能拿到对应日期;如果需要强制保留所有INV行(哪怕不存在对应记录,虽然你说明不存在这种情况),可以将子查询内的INNER JOIN调整为LEFT JOIN。

内容的提问来源于stack exchange,提问作者ysi_d

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 01:42:06