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

如何在MS Access中通过单SQL查询实现基于双列条件的多表内连接

MS Access多表关联获取STATUS字段的SQL查询方案

完整SQL语句

SELECT 
    PERSON.IDPERSON, 
    MASTERPERSON.PERSONNAME, 
    PERSON.[DATE], 
    MASTERPERSON.LOCATION, 
    FORMAT(PERSON.DATE,'dddd') AS DAYS,
    PERSONDAYS.STATUS
FROM 
    (PERSON INNER JOIN MASTERPERSON ON PERSON.IDPERSON = MASTERPERSON.IDPERSON)
    INNER JOIN PERSONDAYS 
        ON MASTERPERSON.LOCATION = PERSONDAYS.LOCATION 
        AND FORMAT(PERSON.DATE,'dddd') = PERSONDAYS.DAYS;

逻辑说明

将PERSON与MASTERPERSON的关联结果,再和PERSONDAYS做双字段内连接:

  • 通过MASTERPERSON.LOCATION匹配PERSONDAYS.LOCATION
  • 通过格式化后的日期星期值(FORMAT(PERSON.DATE,'dddd'))匹配PERSONDAYS.DAYS

现有表结构

PERSON表

IDPERSONDATE
100029-May-24
100030-May-24
100129-May-24
100130-May-24

MASTERPERSON表

IDPERSONPERSONNAMELOCATION
1000ReyA
1001MichaelB

PERSONDAYS表

LOCATIONDAYSSTATUS
AWednesdayA10
AThursdayA27
BWednesdayB18
BThursdayB29

当前查询及结果

当前SQL

SELECT PERSON.IDPERSON, MASTERPERSON.PERSONNAME, PERSON.[DATE], MASTERPERSON.LOCATION, FORMAT(PERSON.DATE,'dddd') AS DAYS
FROM PERSON INNER JOIN MASTERPERSON ON PERSON.IDPERSON = MASTERPERSON.IDPERSON;

当前查询结果

IDPERSONPERSONNAMEDATELOCATIONDAYS
1000Rey29-May-24AWednesday
1000Rey30-May-24AThursday
1001Michael29-May-24BWednesday
1001Michael30-May-24BThursday

期望查询结果

IDPERSONPERSONNAMEDATELOCATIONDAYSSTATUS
1000Rey29-May-24AWednesdayA10
1000Rey30-May-24AThursdayA27
1001Michael29-May-24BWednesdayB18
1001Michael30-May-24BThursdayB29

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 10:03:12