2013-12-19 57 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 ...)'? –

相关问题