2012-06-06 41 views
0

我有兩個表tbl_DaysWeeksMonths(左表)和tbl_Telephony(右表)。 tbl_DaysWeeksMonths有列(Row_Date/Week/Month)的每一天的每一天的記錄,而tbl_Telephony每天有數百個代理的電話數據與列(row_date/agent/calls/talk time)(注意:每個代理只有記錄一週5-6天而不是每天)。訪問加入查詢

我想加入這兩個表,這樣每個代理商都有一週的每一天,無論記錄如果他們採取在一天或沒有電話。我想爲顧問沒有接聽電話的日子顯示空白記錄(日期字段除外)。例如:

## 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; 
+0

您應該使用代碼格式按鈕'{}'來整潔佈局。 – Fionnuala

+0

您的SQL看起來還好我,什麼是錯的,從你的觀點? – Fionnuala

回答

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; 

這還假定在tbl_Telephonyrow_datetbl_DaysWeeksMonths匹配Row_Date值 - 換句話說,在tbl_Telephonyrow_date值是整個天(也就是不包含一個時間組件)。這也假定tbl_Telephony中的i_acdtime值是給定顧問和日期的總通話時間(而不是給定呼叫的通話時間)。據推測,tbl_Telephony中有另一列可以給出給定顧問的總數,以及你可以添加到查詢中的日期,以獲得「你說你想問你的問題」的「呼叫」列。

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; 
+0

在MS Access中,「左連接」與「左外連接」相同。 – Fionnuala

+0

好吧,我在sql server中寫了查詢。謝謝你通知我。 –