2012-09-26 31 views
-1

我有一個可用的SQL語句,用於計算工作日的工資和工作日數,SO的成員之一可以幫助我解決它。然而,問題在於結果只是出現了那段時期的勞動。我真正想要的是,無論他在那段時間工作與否,結果都必須顯示出所有的勞動力(在tbl_labor中)。ACCESS SQL:如何檢索表中的所有數據,即使沒有與其他表加入的數據

select 
    lab.lb_name, 
    max(days), 
    sum(prod.pdtn_qty * pdWk.pd_cost/12) as Total 
from 
    tbl_labor as lab, 
    tbl_production as prod, 
    tbl_pdWk_process as pdwk, 

(select pdn2.lb_id, count(pdn2.lb_id) as days from 
    (select lb_id 
    from tbl_production pdn1 
    where pdn1.pdtn_date >= #9/5/2012# 
    and pdn1.pdtn_date <= #2012-09-20# 
    group by lb_id, pdtn_date) as pdn2 
    group by pdn2.lb_id) as pdn3 

where prod.pdtn_date >= #9/5/2012# 
and prod.pdtn_date <= #2012-09-20# 
and prod.lb_id = lab.lb_id 
and prod.pd_making_id = pdwk.pd_making_id 
and lab.lb_id = pdn3.lb_id 
group by lab.lb_name 

下面是我的相關表:

tbl_labor 
lb_id | lb_name | lb_OT ($/day) | If_social_sec 
    1 | John | 10   | yes 
    2 | Mary | 10   | no 
    3 | Jane | 10   | no 

tbl_production 
pdtn_date | lb_id | pdtn_qty(pcs) | pd_making_id 
5/9/12 | 1 |  200  | 12 
5/9/12 | 1 |  40  | 13 
5/9/12 | 2 |  300  | 12 
7/9/12 | 1 |  48  | 13 
13/9/12 | 2 |  220  | 14 
15/9/12 | 1 |  20  | 12 
20/9/12 | 1 |  33  | 14 
21/9/12 | 2 |  55  | 14 
21/9/12 | 1 |  20  | 12 

tbl_pdWk_process 
pd_making_id | pd_cost($/dozen) | pd_id 
    12  |  2   | 001 
    13  |  5   | 001 
    14  |  6   | 002 

回答

4

取代舊的風格加入

from 
    tbl_labor as lab, 
    tbl_production as prod, 
... 
where 
    lab.fld1 = prod.fld1 

與新LEFT JOIN

from 
    tbl_labor as lab 
    LEFT JOIN tbl_production as prod ON lab.fld1 = prod.fld1 
... 

編輯:
在原密碼

from 
    tbl_labor as lab, 
    tbl_production as prod 
... 
where ... 
prod.lb_id = lab.lb_id 
... 

創建tbl_production和tbl_labor表之間的內部連接。 它需要與新的風格LEFT替代JOIN

from 
    tbl_labor as lab 
    LEFT JOIN tbl_production as prod ON lab.lb_id = prod.lb_id 
... 

你可以閱讀有關SQL連接上http://www.w3schools.com/sql/sql_join.asp

+0

你能否透露細節嗎?用我有限的SQL技術,我無法理解你的意思,特別是「 lab.fld1 = prod.fld1」你指的是什麼?因爲在我的發言中沒有這樣的項目。 – Alxan

+0

我會在主要答案中發佈其他代碼 –

+0

其實,我的確瞭解了LEFT JOIN的基本知識。但是,對於這個SQL語句,我很困惑你給出的答案。因爲還有其他條件(其中pdn1.pdtn_date> =#9/5/2012 ...)和其他表格(tbl_pdWk_process)在您未提及的語句中間交叉。我真的不知道該把它放到哪裏。
實際上,我可以在給定的時間內創建獨特生產日期計數。我可以將它計算爲總和工資金額。但我只能在分離的SQL中做到這一點。當把它放在一起時,這超出了我的技能。 – Alxan

相關問題