即使我的tbl_planned中没有某些日期的数据,我仍试图让查询提取数据以包含一个tbl_actual中的所有日期。
但是当同时使用我的内部联接和我的左联接时,就是说不支持左联接。
我尝试使用两个内部联接代替左联接,但这仍然仅从tbl_planned查询中提取日期,我也需要从tbl_actual获取所有日期
SELECT cal.Day, planned.LocalDay, actual.LocDay, actual.Over30Minutes,
actual.Over30MinutesHours, actual.NumOfUses, actual.TotalDurationTaken,
planned.Campaign, planned.Supervisor, planned.DurationScheduled,
actual.PersonID, planned.PersonID
FROM (tbl_actual AS actual INNER JOIN tbl_planned AS planned ON
(planned.PersonID = actual.PersonID)) Left Join tbl_actual ON actual.LocDay
= planned.LocalDay
答案 0 :(得分:1)
即使我的tbl_planned中没有某些日期的数据,我仍试图让查询提取数据以包含一个tbl_actual中的所有日期。
在SQL中,这可以表示为tbl_actual LEFT JOIN tbl_planned
,后跟联接条件(日期和人)。 tbl_actual
中与tbl_planned
中不匹配的记录仍将包含在输出中,与tbl_planned
相关的所有列均显示NULL
。
我想您的查询可以简化如下:
SELECT
-- cal.Day,
planned.LocalDay,
actual.LocDay,
actual.Over30Minutes,
actual.Over30MinutesHours,
actual.NumOfUses,
actual.TotalDurationTaken,
planned.Campaign,
planned.Supervisor,
planned.DurationScheduled,
actual.PersonID,
planned.PersonID
FROM
bl_actual AS actual
LEFT JOIN tbl_planned
ON planned.PersonID = actual.PersonID
AND actual.LocDay = planned.LocalDay
PS:什么是表别名cal
,如结果集第一列cal.Day
所示?在查询中的任何地方都没有声明此别名,我在该列中将其注释掉。
答案 1 :(得分:0)
我认为您只想引用tbl_actual
:
FROM tbl_actual AS actual INNER JOIN
tbl_planned AS planned
ON planned.PersonID = actual.PersonID AND
actual.LocDay = planned.LocalDay