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

如何用MS Access SQL关联Master与Master_Split表查询主记录及拆分记录

解决方案:关联Master表与拆分记录表的统一查询

没问题,我来帮你搞定这个查询需求!你现在需要把主交易记录(Master表)和对应的拆分日记账条目(Master_Split表)以统一格式查询出来,之前用右连接只获取拆分条目,调整关联方式就能实现目标。

核心逻辑分析

Master表的每条记录有唯一masterID,Master_Split通过import_Master_ID关联主表,我们需要以主表为基础,关联它的所有拆分条目,这里分两种常见场景:


场景1:需要包含所有主记录(即使没有拆分条目)

用LEFT JOIN可以保证不管主记录有没有对应的拆分,都会被查询出来,拆分字段为空时会显示NULL,适合需要完整主记录清单的场景:

SELECT
    -- 主表字段,根据你的实际需求调整
    M.masterID AS 主记录ID,
    M.transaction_date AS 交易日期,
    M.amount AS 主交易金额,
    -- 拆分表字段,同样按需调整
    MS.splitID AS 拆分分录ID,
    MS.journal_entry AS 日记账分录内容,
    MS.split_amount AS 拆分金额
FROM
    Master M
LEFT JOIN
    Master_Split MS ON M.masterID = MS.import_Master_ID
ORDER BY
    M.masterID, MS.splitID; -- 按主记录ID+拆分ID排序,格式更统一

场景2:只需要有拆分条目的主记录

如果只关心那些已经被拆分成日记账的主交易,用INNER JOIN就可以,它只会返回两边都有匹配的记录:

SELECT
    M.masterID AS 主记录ID,
    M.transaction_date AS 交易日期,
    M.amount AS 主交易金额,
    MS.splitID AS 拆分分录ID,
    MS.journal_entry AS 日记账分录内容,
    MS.split_amount AS 拆分金额
FROM
    Master M
INNER JOIN
    Master_Split MS ON M.masterID = MS.import_Master_ID
ORDER BY
    M.masterID, MS.splitID;

小技巧:优化统一格式显示

如果想让无拆分的主记录显示更友好,比如把NULL替换成提示文本,可以用COALESCE函数:

SELECT
    M.masterID AS 主记录ID,
    M.transaction_date AS 交易日期,
    M.amount AS 主交易金额,
    COALESCE(CAST(MS.splitID AS VARCHAR), '无拆分分录') AS 拆分分录ID,
    COALESCE(MS.journal_entry, '无对应日记账内容') AS 日记账分录内容,
    COALESCE(CAST(MS.split_amount AS VARCHAR), '0') AS 拆分金额
FROM
    Master M
LEFT JOIN
    Master_Split MS ON M.masterID = MS.import_Master_ID
ORDER BY
    M.masterID;

这样查询结果的格式会更统一,不管有没有拆分条目都能清晰展示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:01:52