mysql select - 当列不存在时,选择AVG()查询不返回

时间:2013-12-23 10:25:06

标签: mysql select group-by average

我正在尝试使用感知平均值进行选择。这些是我的表格:

tb_module

ID_MOD                   MODULE                   ID_PR
  1                     Module 1                    1
  2                     Module 2                    1
  3                     Module 3                    2

tb_activity

ID_ACT                 ID_MOD                    ACTIVITY
   1                      1                     Activity 1.1
   2                      1                     Activity 1.2
   3                      2                     Activity 2.1
   4                      2                     Activity 2.2

tb_percentaje

ID_PERC                ID_ACT                PERCENTAJE
   1                     1                       20
   2                     2                       10
   3                     3                       70
   4                     4                       50

QUERY S中的一个是这样的----> WHERE ID_PRO = 1(当模块有活动时):

ID_MOD                      MODULE                      AVG(PERCENTAJE)
   1                       Module 1                          15
   2                       Module 2                          60

但是,当模块没有活动时,------> WHERE ID_PRO = 2。查询返回0行。

我该如何解决这个问题?

应该是这样的,WHERE ID_PRO = 2

ID_MOD                      MODULE                      AVG(PERCENTAJE)
  3                        Module 3                          0

'0'因为没有活动。

1 个答案:

答案 0 :(得分:1)

试试这个:

SELECT m.ID_MOD, m.MODULE, AVG(p.PERCENTAJE)
FROM tb_module m 
LEFT JOIN tb_activity a ON m.ID_MOD = a.ID_MOD 
LEFT JOIN tb_percentaje p ON a.ID_ACT = p.ID_ACT 
WHERE m.ID_PRO = 2
GROUP BY m.ID_MOD