【问题标题】:Bring Two Database Queries Together将两个数据库查询放在一起
【发布时间】:2016-09-30 23:26:52
【问题描述】:

我正在使用 Access 数据库在我累积和使用休假时间时跟踪我的个人年假和病假 (AL/SL) 余额。

我有一个查询,它确定哪些支付周期有资格获得休假,并显示每个周期的休假金额。 (目前,AL/SL 每期各 4 小时。)

--- qryEarned Leave ------------------------
Period      PP      Code    Earned
2/14/2015   03-1    AL      4
2/14/2015   03-1    SL      4
2/28/2015   04-1    AL      4
2/28/2015   04-1    SL      4
3/14/2015   05-1    AL      4
3/14/2015   05-1    SL      4
3/28/2015   06-1    AL      4
3/28/2015   06-1    SL      4
4/11/2015   07-1    AL      4
4/11/2015   07-1    SL      4
4/25/2015   08-1    AL      4
4/25/2015   08-1    SL      4
5/9/2015    09-1    AL      4
5/9/2015    09-1    SL      4
5/23/2015   10-1    AL      4
5/23/2015   10-1    SL      4
6/6/2015    11-1    AL      4
6/6/2015    11-1    SL      4
6/20/2015   12-1    AL      4
6/20/2015   12-1    SL      4

第二个查询提取显示我何时使用休假的数据。

--- qryUsedLeave ---------------------------
Period      PP      Code    Total
3/21/2015   05-2    SL      10
5/16/2015   09-2    AL      8
5/23/2015   10-1    AL      24
6/20/2015   12-1    SL      8

我想要做的是结合这两个查询,以便在每个期间的“赚取”假期之后列出已用假期的“总计”:

--- Desired Result -------------------------
Period      PP      Code    Earned  Used
2/14/2015   03-1    AL      4       -
2/14/2015   03-1    SL      4       -
2/28/2015   04-1    AL      4       -
2/28/2015   04-1    SL      4       -
3/14/2015   05-1    AL      4       -
3/14/2015   05-1    SL      4       -
3/21/2015   05-2    SL      -       10
3/28/2015   06-1    AL      4       -
3/28/2015   06-1    SL      4       -
4/11/2015   07-1    AL      4       -
4/11/2015   07-1    SL      4       -
4/25/2015   08-1    AL      4       -
4/25/2015   08-1    SL      4       -
5/9/2015    09-1    AL      4       -
5/9/2015    09-1    SL      4       -
5/16/2015   09-2    AL      -       8
5/23/2015   10-1    AL      4       24
5/23/2015   10-1    SL      4       -
6/6/2015    11-1    AL      4       -
6/6/2015    11-1    SL      4       -
6/20/2015   12-1    AL      4       -
6/20/2015   12-1    SL      4       8

我可以做些什么来将这些查询组合在一起以产生我想要的结果? 我确信这一定是一件相当简单的事情,但我就是无法理解它。 (目前我只有一个 VBA 模块,它将第一个查询插入到表中,然后读取第二个查询以更新行或插入新行,并计算开始/结束余额)

【问题讨论】:

    标签: database ms-access


    【解决方案1】:

    第一步是在 PP 上创建一个从 qryEarned 到 qryUsed 的 LEFT JOIN 查询。

    这将为您提供具有匹配 qryUsed 数据的所有 qryEarned 行,但缺少额外的 qryUsed 行(例如05-2)。

    如果您无法将这些时间段添加到“Earned”数据中(这将是最简单的),请创建第二个 LEFT JOIN 查询,这次反过来,并创建一个条件 qryEarned.PP IS NULL。不一致或不匹配数据的查询助手可以为您创建这样的查询。
    这将只给出 qryUsed 中缺失的行。

    最后使用 UNION 查询将两者放在一起。

    【讨论】:

    • 谢谢!我认为它必须是某种 UNION,但 qryEarned.PP IS NULL 测试是我忽略的部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 2015-10-08
    • 1970-01-01
    • 2016-01-16
    相关资源
    最近更新 更多