Вам нужно левое соединение от categories
до films
, чтобы включить в результаты все категории, даже те, у которых нет фильмов, и сгруппировать по категориям для подсчета:
select c.name, count(f.film_id) counter
from categories c left join films f
on f.category_id = c.category_id
group by c.category_id, c.name
См. демо .Результаты (для ваших выборочных данных, которые включают category_id
s в таблице films
, которых нет в таблице categories
, поэтому они не учитываются):
| name | counter |
| ----------- | ------- |
| Action | 0 |
| Animation | 0 |
| Children | 0 |
| Classics | 0 |
| Comedy | 1 |
| Documentary | 2 |
| Drama | 0 |
| Family | 1 |
| Foreign | 1 |
| Games | 0 |