volkovecgenei
@volkovecgenei
...

Вывод категорий и удаление их независимо от кол-ва товара?

Есть таблица
Category
-id_category
-name

и таблица
Product
Мне нужно сделать вывод сведений о категориях и при этом, чтобы вывести кол-во товаров в этй категории. Использую такой запрос
SELECT category.id_category as id_category, category.name as name, count(*) as cnt
FROM product 
INNER JOIN category on product.id_category = category.id_category
GROUP BY category.id_category

Но он выводит только если в категории уже есть товары, а если у меня категория пустая и мне нужно ее удалить, то как ее вывести? Мне нужен вывод всех категорий, а не только в которых есть товары
  • Вопрос задан
  • 60 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT `c`.`id_category`, `c`.`name`, IFNULL(`p`.`count`, 0) AS `count`
  FROM `category` AS `c`
  LEFT JOIN (
    SELECT `id_category`, COUNT(*) AS `count`
      FROM `product`
      GROUP BY `id_category`
  ) AS `p` ON `p`.`id_category` = `c`.`id_category`
либо
SELECT `c`.`id_category`, `c`.`name`, IFNULL(`p`.`count`, 0) AS `count`
  FROM (
    SELECT `id_category`, COUNT(*) AS `count`
      FROM `product`
      GROUP BY `id_category`
  ) AS `p` 
  RIGHT JOIN `category` AS `c` ON `c`.`id_category` = `p`.`id_category`
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@pocifis
PHP-разработчик
Для этого нужно использовать LEFT JOIN, а не INNER.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы