Я настраиваю запросы для бэкэнда электронной коммерции.У меня есть 3 таблицы: продукт (с идентификатором в качестве индекса), категория (с идентификатором в качестве индекса) и product_category, которая связывает первые 2 таблицы, поскольку один продукт может быть в нескольких категориях, и в одной категории может быть несколько продуктов.
Запрос на получение списка всех категорий, содержащих названия категорий и количество товаров в этой категории, включая нулевые значения (когда категория не содержит товаров).Последние 2 столбца показанных результатов.
К сожалению, COUNT (имя поля) дает мне 1 вместо 0.
Вот мой запрос SQL:
SELECT product_category.id_category AS pr_cat_cat_id,
id_product AS pr_cat_pr_id,
product.name AS productname,
categories.id,
categories.name,
COUNT ('pr_cat_cat_id') AS quantity
FROM product
LEFT JOIN product_category ON product_category.id_product = product.id
RIGHT JOIN (SELECT * FROM category) AS categories
ON categories.id = product_category.id_category
GROUP BY name
ORDER BY id ASC
и получите эторезультат:
pr_cat_cat_id pr_cat_pr_id productname id name quantity
1 1 Product "Name1" 1 Category 1 2
2 3 Product "Name 3" 2 Category 2 2
NULL NULL NULL 3 Category 3 1
NULL NULL NULL 4 Category 4 1
NULL NULL NULL 5 Category 5 1
NULL NULL NULL 6 Category 6 1
Я ожидаю, что количество будет нулевым для категорий без продуктов.