我有两张table,两种不同的类型和预订
职业类型
id | name
1 | foo
2 | bar
3 | baz
预订
id | career_type_id | details
1 | 1 | foo
2 | 1 | bar
3 | 2 | baz
我的bookings表中有很多关于所有职业类型的条目,但career\u types.id为3的除外。
我需要一个查询,它将列出我的所有职业类型.name以及每个预订的数量,如果职业类型为.id=1,则没有预订。我要返回0。
到目前为止我一直在尝试
SELECT career_types.name, sum(bookings.id)
FROM career_types
LEFT JOIN bookings ON (career_types.id = bookings.career_type_id)
GROUP BY career_types.id
我想要的结果是
career_types.name | sum
foo | 2
bar | 1
baz | 0
但目前我还不能为baz提供任何输出。
1条答案
按热度按时间lkaoscv71#
聚合函数的计算中只包含非空值。对于sum和大多数聚合函数,如果没有遇到非null值,则结果为null。如果需要零,而不是空,可以简单地用以下公式说明:
IFNULL(SUM(x), 0)