SELECT WHERE Between SELECT 来自另一个 table 的日期

SELECT WHERE Between SELECT Dates from another table

我想知道是否可以做到这一点 simpler/shorter。它正在运行,但我认为我可以更快、更高效或更清洁。

SELECT Tbl_VSchedTime.* 
FROM CalendarScheduled
INNER JOIN Tbl_VSchedTime ON CalendarScheduled.[EID] = Tbl_VSchedTime.[EID]
WHERE ([Tbl_VSchedTime].[SchdDate] Between (SELECT MIN(CalendarScheduled.[SchdDate]) FROM CalendarScheduled) And (SELECT MAX(CalendarScheduled.[SchdDate]) FROM CalendarScheduled));

这是我的测试 Select 实际上将更改为删除。简而言之,我从 Tbl_VShedTime 中选择与 INNER JOIN 上的 EID 匹配的任何内容以及 CalendarScheduled 中的最小日期和最大日期之间的任何内容。但是我被迫在每个日期下使用 SELECT 才能正常工作。当我已经 "conjured" FROM 语句中的 table 时,它不会仅仅通过使用 MIN 和 MAX 来工作。

这是我必须在访问中使用它的方式还是我错过了什么?谢谢。

编辑:问题是:为什么我不能只写:

WHERE ([Tbl_VSchedTime].[SchdDate] Between MIN(CalendarScheduled.[SchdDate]) And MAX(CalendarScheduled.[SchdDate]))

考虑加入聚合查询,然后在WHERE条件下使用聚合。因为聚合 return 一行,所以将它们与您当前的查询交叉连接,这在 MS Access 中意味着 FROM:

中的逗号分隔

内连接之前的交叉连接

SELECT t.* 
FROM 
(SELECT MIN([SchdDate]) AS MinDate, MAX([SchdDate]) AS MaxDate
 FROM CalendarScheduled) AS agg
,
CalendarScheduled c
INNER JOIN Tbl_VSchedTime t ON c.[EID] = t.[EID]
WHERE (t.[SchdDate] BETWEEN agg.MinDate AND agg.MaxDate;

内连接后的交叉连接

SELECT t.* 
FROM 
 (CalendarScheduled c
  INNER JOIN Tbl_VSchedTime t ON c.[EID] = t.[EID])
,
(SELECT MIN([SchdDate]) AS MinDate, MAX([SchdDate]) AS MaxDate
 FROM CalendarScheduled) AS agg
WHERE (t.[SchdDate] BETWEEN agg.MinDate AND agg.MaxDate;