【问题标题】:MS Access multi (INNER, LEFT & RIGHT) JOIN queryMS Access 多 (INNER, LEFT & RIGHT) JOIN 查询
【发布时间】:2015-08-25 21:59:45
【问题描述】:

好的,事情就是这样。我涉及以下表格:

> YEARS
------------------------------ 
ID    YEAR      ACTUAL
------------------------------ 
1     2014-15   TRUE 
2     2015-16   FALSE


> SHOPS
------------------------------ 
ID    NAME     ...
------------------------------ 
1     ThisShop ...


> ITA
------------------------------ 
ID    YEAR_ID   SHOP_ID
------------------------------ 
1     1         1 
2     1         2 
...


> INSPECTORS
------------------------------ 
ID    INSPECTOR
------------------------------ 
1     M. Black
2     M. White
3     M. Brown
...


> ITA_INSPECTORS
-------------------------------------------------------
ID    ID_ITA    ID_INSPCTR     StartDate    EndDate
-------------------------------------------------------

事情就是这样,我想要一个查询来显示所有INSPECTORS,无论是否在ITA_INSPECTORS 中为SHOPS ID = 1 AND YEARS ID = 1 列出。如果检查员出现在ITA_INSPECTORS 表中,则显示开始和结束日期,如果没有,则不显示日期。

请注意,ITA_INSPECTORS 表中可能没有选定商店的ITA_ID(假设ITA_INSPECTORS 表为空,我仍需要查看所有 INSPECTOR 名称)。

INSPECTORS 表是用于构建ITA_INSPECTORS 表的静态数据。

我试过这个查询:

SELECT * FROM ((ITA 
INNER JOIN YEARS ON ITA.ID_YEAR = YEARS.ID)
LEFT JOIN ITA_INSPECTORS ON ITA.ID = ITA_INSPECTORS.ID_ITA)
RIGHT JOIN INSPECTORS ON ITA_INSPECTORS.ID_INSPCTR = INSPECTORS.ID
WHERE ITA.SHOP_ID = 1 AND ((YEARS.ACTUAL) = True);

在我添加 RIGHT JOIN 子句之前它一直有效,然后我收到一条错误消息 Join expression not supported

谁能指导我正确的做法?

【问题讨论】:

  • 尝试在 ms-access 选项卡中搜索“不支持联接表达式”。有很多相关的问题 - 其中一个很可能解决了您的问题(例如this one

标签: sql ms-access join ms-access-2010 outer-join


【解决方案1】:

一种解决方案是拆分查询,使其没有这些冲突连接 所以创建一个查询,例如 q1

SELECT *
FROM (
    (
        ITA INNER JOIN YEARS ON ITA.ID_YEAR = YEARS.ID
        ) LEFT JOIN ITA_INSPECTORS ON ITA.ID = ITA_INSPECTORS.ID_ITA
    )  

然后创建第二个查询以进行所需的正确连接

SELECT INSPECTORS.ID, INSPECTORS.INSPECTOR, q1.*
FROM INSPECTORS LEFT JOIN q1 ON INSPECTORS.ID = q1.ID_ITA;

【讨论】:

  • 我不得不稍微修改一下,通过两个不同的子表单来设法显示我想要的方式,但由于这项技术,它最终成功了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-06
  • 2013-05-02
  • 2015-01-10
  • 2022-01-20
  • 1970-01-01
  • 1970-01-01
  • 2020-03-07
相关资源
最近更新 更多