访问加入查询

时间:2012-06-06 06:21:11

标签: sql ms-access ms-access-2007

我有两个表tbl_DaysWeeksMonths(左表)和tbl_Telephony(右表)。 tbl_DaysWeeksMonths记录了一年中的每一天的列(Row_Date / Week / Month),而tbl_Telephony每天都有数百个代理的电话数据和列(row_date / agent / calls / talk time)(注意:每个代理只有记录)一周5-6天而不是每天。)

我想加入这两个表,以便每个代理都有一周中每一天的记录,无论他们是否在一天内接听电话。我想在顾问没有接听电话的日子里显示空白记录(日期字段除外)。 E.g:

## Date ##           ## Agent ##          ## Calls ##      ## Talk Time ##

 1. 26/05/2012     |     James        |         40       |           560
 2. 27/05/2012     |     James        |                  |
 3. 28/05/2012     |     James        |         34       |           456
 4. 29/05/2012     |     James        |                  |
 5. 30/05/2012     |     James        |         40       |           643
 6. 31/05/2012     |     James        |         36       |           345
 7. 01/06/2012     |     James        |         31       |           160

我正在尝试使用以下代码,但我不认为这是正确的。有关更好的代码使用的任何建议。请帮忙。

SELECT tbl_DaysWeeksMonths.Row_Date, 
       [tbl_Telephony].Consultant, 
       [tbl_Telephony].i_acdtime
FROM tbl_DaysWeeksMonths
LEFT JOIN [tbl_Telephony] 
ON tbl_DaysWeeksMonths.Row_Date = [tbl_Telephony].row_date;

2 个答案:

答案 0 :(得分:0)

您也可以使用此查询。

SELECT tbl_DaysWeeksMonths.Row_Date, [tbl_Telephony].Consultant, [tbl_Telephony].i_acdtime

FROM tbl_DaysWeeksMonths

LEFT OUTER JOIN [tbl_Telephony] ON tbl_DaysWeeksMonths.Row_Date = [tbl_Telephony].row_date;

答案 1 :(得分:0)

步骤1 - 假设您有一个表(例如,名为Consultants)列出每个不同的顾问,创建一个查询(例如,名为Consultant Days),生成所有可能的日期和顾问组合。它可能看起来像这样:

SELECT [Consultants].Consultant, tbl_DaysWeeksMonths.Row_Date
FROM [Consultants], tbl_DaysWeeksMonths;

如果您没有Consultants表,则可以使用选择tbl_Telephony中列出的不同顾问的查询替换它。换句话说,您可以创建一个如下所示的Consultants 查询

SELECT DISTINCT Consultant FROM [tbl_Telephony];

第2步 - 创建外部加入tbl_TelephonyConsultant Days的查询。它可能看起来像这样:

SELECT [Consultant Days].Row_Date, [Consultant Days].Consultant, [tbl_Telephony].i_acdtime 
FROM [Consultant Days] 
LEFT JOIN [tbl_Telephony]  
ON [Consultant Days].Consultant = [tbl_Telephony].Consultant 
AND [Consultant Days].Row_Date = [tbl_Telephony].row_date;

这也假设row_date中的tbl_Telephony值与Row_Date中的tbl_DaysWeeksMonths值相匹配 - 换句话说,row_date中的tbl_Telephony值1}}是整天(也就是说,不包含时间组件)。这也假设i_acdtime中的tbl_Telephony值是给定顾问和日期的总通话时间(而不是给定呼叫的通话时间)。据推测,tbl_Telephony中有另一列可以给出给定顾问和日期的cals总数,您可以将其添加到查询中以获取您希望提出问题的“呼叫”列。