2013-12-19 26 views
0

我有這些表。如何從創建虛擬列的表中獲取不同值的「類型」 - MySQL

tb_employee

ID_EMP   NAME_EMP 
1    Employee 1 
2    Employee 2 
3    Employee 3 
4    Employee 4 

tb_requirements

ID_REQ     DESCRIPTION_REQ    TYPE_REQ 
1      Requirement 1     1 
2      Requirement 2     1 
3      Requirement 3     1 
4      Requirement 4     2 
5      Requirement 5     2 
6      Requirement 6     2 
7      Requirement 7     2 

tb_detail

ID_DET      ID_EMP      ID_REQ 
1        1        1 
2        1        2 
3        1        4 
4        2        1 
5        2        6 
6        3        4 
7        3        7 

我需要ŧ Ø做出SELECT QUERY計算每個員工有多少requirements得到和類型,像這樣:

ID_EMP    NAME_EMP   TYPE_REQ1(virtual column)  TYPE_REQ2 (virt. c.) 
1     Employee 1    2       4 
2     Employee 2    1       1 
3     Employee 3    0       2 
4     Employee 4    0       0 

我真的不知道該怎麼做。

+0

正確的DDL和/或sqlfiddle可能有幫助,加上SET – Strawberry

回答

1

試試這個

SELECT 
e.ID_EMP 
,e.NAME_EMP 
,(CASE WHEN SUM(r.TYPE_REQ=1) IS NULL THEN 0 ELSE SUM(r.TYPE_REQ=1) END) TYPE_REQ1 
,(CASE WHEN SUM(r.TYPE_REQ=2) IS NULL THEN 0 ELSE SUM(r.TYPE_REQ=2) END) TYPE_REQ2 
FROM 
tb_employee e 
LEFT JOIN tb_detail d ON (e.ID_EMP=d.ID_EMP) 
LEFT JOIN tb_requirements r ON (d.ID_REQ=r.ID_REQ) 
GROUP BY e.ID_EMP 
+0

期望的結果這是偉大的!但是,這隻顯示了第一名員工的詳細信息(在這種情況下是'ID_EMP 1')...我會嘗試修改查詢 –

+0

@JhonatanSandoval用左加入看到我更新的答案 –

+0

GREAT !!但是現在我在某些行中看到了'NULL',我怎樣才能將它設置爲'0'?我記得像'IS NULL(SUM ...)'? –

相關問題