How do I count the number of products by category?

7

Ihavethetabletbl_produtos

  • product_id
  • product_name
  • cat_product

Ihavethetabletbl_categorias

  • category_id
  • category_name

HowwouldIcountthenumberofproductsforagivencategory,forexampleCartazes,whichis000001SQL?

  

Update

    
asked by anonymous 25.11.2014 / 18:20

3 answers

8

A solution with good performance and readability can be obtained by using count () and group by .

SELECT
    c.id_categoria,
    c.nome_categoria,
    count(p.id_produto) AS quantidade
FROM
    tbl_categorias c
LEFT JOIN
    tbl_produtos p ON p.cat_produto = c.id_categoria
GROUP BY
    c.id_categoria,
    c.nome_categoria
ORDER BY
    c.nome_categoria;
    
25.11.2014 / 18:30
2

You can use a subquery for this, as in the example below.

SELECT (
   SELECT count(id) FROM produtos WHERE categoria_id = categorias.id
) as quantidade
FROM categorias WHERE [sua condição para categoria]

In your case you can do

SELECT id_categoria,
       nome_categoria,
       (SELECT count(id_produto) 
        FROM tbl_produtos WHERE cat_produto=tbl_categorias.id_categoria
       ) as quantidade
    FROM tbl_categorias
    
25.11.2014 / 18:25
1
<!--=============================================================-->
<!--===Inicio - Essa Parte trata a quantidade por Categoria======-->

    <?php
    $categoria = array(); //Declarado um Array sem Tamanho
    $contitensCat = 0;    //Essa Variavel vai contar quantas categorias tem Geral
    $itensCat = 0;        //Essa vai entrar na function e contar a quantidade de cada categoria de quem esta chamando a function

            $buscaSegura = $pdo->prepare("SELECT categoria FROM produtos"); //Faz a Busca da coluna inteira da Categoria do banco de dados
            $buscaSegura->execute(); // Executa o Select
            $consultaBanco = $buscaSegura->fetchAll(PDO::FETCH_ASSOC);

    foreach($consultaBanco as $consulta) 
    {
        array_push($categoria, $consulta['categoria']);
        $contitensCat++; //A cada linha Encontrada essa variavel vai ser incrementada
    }


function cont($palavra,$categoria,$contitensCat,$itensCat)
{
    for($i = 0; $i < $contitensCat; $i++)
    {
        if($categoria[$i]==$palavra)//Se achar a palavra, ai entra nesse IF
        {
            $itensCat++;
        }
    }
    return $itensCat;//Retorna  Quantidade de itens achado de acordo com o parâmetro passado a função
}
    ?>

<!--======Fim - Essa Parte trata a quantidade por Categoria======-->
<!--=============================================================-->

 - Acessórios (<?=cont("ac",$categoria,$contitensCat,$itensCat);?>)
 - Brinquedos  (<?=cont("brinq",$categoria,$contitensCat,$itensCat);?>)
 - Games (<?=cont("games",$categoria,$contitensCat,$itensCat);?>)
 - Informática (<?=cont("inf",$categoria,$contitensCat,$itensCat);?>)
    
25.11.2016 / 02:39