【问题标题】:mysql select - select AVG() query doesn't return when columns does not existmysql select - 当列不存在时,选择 AVG() 查询不返回
【发布时间】:2013-12-23 10:25:05
【问题描述】:

我正在尝试使用 percetaje 平均值进行选择。这些是我的桌子:

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

我的一个QUERYS 是这样的----> 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' 因为没有活动。

【问题讨论】:

  • 您打算如何区分没有活动的模块和平均百分比为 0 的活动的模块?无论如何,您可能想要使用 outer 连接。见A Visual Explanation of SQL Joins
  • 抱歉,我编辑了问题。

标签: mysql select group-by average


【解决方案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

【讨论】:

  • 适用于 WHER ID_PRO = 1 ... 与 2 ,返回 0 行
  • 做了一些修改,终于搞定了……非常感谢!
猜你喜欢
  • 2021-07-27
  • 2012-11-05
  • 1970-01-01
  • 2013-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多