在 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
.
的情况
假设我有以下 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
.