【发布时间】:2014-06-06 17:15:53
【问题描述】:
我有 3 张桌子要合并。一个是 Personnel 列表,一个是 Personnel 表中每个人的 Schedules 列表,第三个是每个人的临时计划列表。我想返回一个表格,其中包含来自人员的一些信息,然后是他们的日程安排和临时日程安排,其中两种类型的日程安排开始和结束日期符合某些标准。我尝试了以下 SQL 代码...
SELECT Personnel.ID, Personnel.Name, Schedules.LinkID, Schedules.BeginDate, Schedules.EndDate, Schedules.Shift, tempSchedules.LinkID, tempSchedules.BeginDate, tempSchedules.EndDate, tempSchedules.Shift
FROM ((Personnel INNER JOIN Schedules ON (Schedules.LinkID = Personnel.ID
AND ((Schedules.BeginDate BETWEEN #01-June-2014# and #30-June-2014#) OR (Schedules.EndDate BETWEEN #01-June-2014# and #30-June-2014#) OR (Schedules.BeginDate <=#01-June-2014# AND Schedules.EndDate >=#30-June-2014#))))
INNER JOIN tempSchedules ON (tempSchedules.LinkID = Personnel.ID
AND ((TempSchedules.BeginDate BETWEEN #01-June-2014# and #30-June-2014#) OR (TempSchedules.EndDate BETWEEN #01-June-2014# and #30-June-2014#) OR (TempSchedules.BeginDate <=#01-June-2014# AND TempSchedules.EndDate >=#30-June-2014#))))
ORDER BY Schedules.Shift
这有效,但它返回的结果只有 TempSchedules 和 Schedules 开始和结束日期都符合条件,并在 Schedules 列旁边加入 TempSchedules 列。例如,我得到以下列...
ID | Name | Schedules.LinkID | Schedules.BeginDate | Schedules.EndDate | Schedules.Shift | TempSchedules.LinkID | TempSchedules.BeginDate | TempSchedules.EndDate | TempSchedules.Shift
我希望它看起来像这样......
ID | Name | LinkID | BeginDate | EndDate | Shift
所以我会从 Schedule 中获取符合日期条件的列,然后从 TempSchedules 中获取符合日期条件的列。
ID | Name | LinkID | BeginDate | EndDate | Shift
01 | Bob | 52 | 01-April-2014 | 01-Dec-2014 | Days
02 | Tim | 34 | 01-Jan-2014 | 01-Aug-2014 | Days
03 | Bob | 52 | 01-Jun-2014 | 15-Jun-2014 | Swings //this is from temp schedules)
04 | Tim | 34 | 07-Jun-2014 | 28-Jun-2014 | Graves //this is from temp schedules)
我正在使用 Javascript 访问 Microsoft Access 数据库。
【问题讨论】:
标签: sql database ms-access join