2015-03-25 83 views
0

林奮力連接兩個表可能會輸出一些空值MySQL的加入兩個表空值

這裏是我的第一臺命名爲:Leave_Type

id name   days_entitled 
1 Vacation leave 12 
2 Sick leave  12 
3 maternity leave 5 
4 paternity leave 5 

留下詳細

requester_id requester_name leave_type_id days_consumed 
1   John   1    1 
1   John   2    3 
1   John   1    1 

我喜歡看到請求者的結果約翰

id name   days_entitled days_consumed 
1 Vacation leave 12    2 
2 Sick leave  12    3 
3 maternity leave 5    0 
4 paternity leave 5    0 

回答

1

你可以得到想要的結果作爲

select 
lt.*, 
coalesce(x.days_consumed,0) as days_consumed 
from leave_type lt 
left join ( 
    select leave_type_id, 
    sum(days_consumed) as days_consumed 
    from leave_details 
    where requester_id = 1 group by leave_type_id 
)x on x.leave_type_id = lt.id 
1

嘗試使用left join

select id,name,days_entitled, ifNull(days_consumed,0) from 
Leave_Type left outer join Leave_Details on leave_type_id = id 
+0

我可以得到相同的值,如果我過濾查詢(其中requester_id = 1) – freddy 2015-03-25 06:19:57

+0

如果約翰像2相同的休假類型的兩個入口? – 2015-03-25 06:34:37

+0

@Keval然後OP必須使用'group by'和'sum'功能。但是這個問題並不是我所能看到的。 – Jens 2015-03-25 06:35:37

0

大。

select `requester`, tbl_hr_leave_type.id,name,`days_entitled`,sum(days) as Credit from 
tbl_hr_leave_type left outer join tbl_hr_leave_form on tbl_hr_leave_form.`leave_details` = tbl_hr_leave_type.id and requester='411' 
group by name 
order by tbl_hr_leave_type.id