在 MySQL 中如何 return 计算相关表中两列的总和等于特定值的记录?

In MySQL how to return a count of records where the SUM of two colmuns in related tables is equal to a particular value?

假设我有以下 3 个表: Table 1(会话)

SessionID SessionName
1         Running
2         Jumping
3         Skipping
4         Running
5         Running

Table 2(预订)

ID SessionID UserID Attended
1  1         1      1
2  4         2      1
3  4         3      0
4  2         1      1
5  5         4      1

Table 3(其他预订)

ID SessionID GroupID NumberAttended
1  1         1       1
2  1         2       32
3  2         1       4
4  4         3       3
5  4         4       1

我想找到会话名称为 'Running' 的会话计数和与会者的总和(来自其他两个表的值大于给定值,比如 5)。所以像:

SELECT COUNT(*) AS SessionTotal ... 总和(Bookings.Attended + OtherBookings.NumberAttended) > 5

这样行吗?

SELECT count(*) 
FROM   sessions s 
WHERE  IFNULL((SELECT sum(b.attended) FROM bookings b WHERE b.sessionid = 
           s.sessionid AND s.sessionname = 'Running'), 0) 
       + 
       IFNULL((SELECT sum(o.numberattended) FROM otherbookings o WHERE 
           o.sessionid = s.sessionid AND s.sessionname = 'Running'), 0) 
       > 5; 

这里是sqlfiddle

该查询在子查询中分别统计两个表的总和,然后将结果相加。 IFNULL 用于处理其中一个子查询 returns null.

的情况