【发布时间】: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