-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
你能否透露細節嗎?用我有限的SQL技術,我無法理解你的意思,特別是「 lab.fld1 = prod.fld1」你指的是什麼?因爲在我的發言中沒有這樣的項目。 – Alxan
我會在主要答案中發佈其他代碼 –
其實,我的確瞭解了LEFT JOIN的基本知識。但是,對於這個SQL語句,我很困惑你給出的答案。因爲還有其他條件(其中pdn1.pdtn_date> =#9/5/2012 ...)和其他表格(tbl_pdWk_process)在您未提及的語句中間交叉。我真的不知道該把它放到哪裏。
實際上,我可以在給定的時間內創建獨特生產日期計數。我可以將它計算爲總和工資金額。但我只能在分離的SQL中做到這一點。當把它放在一起時,這超出了我的技能。 – Alxan