How do I count the amount of products per category?

Asked

Viewed 1,170 times

7

inserir a descrição da imagem aqui

I have the table tbl_produtos

  • id_product
  • product name
  • cat_product

I have the table tbl_categorias

  • id_categoria
  • category name

How would I count the amount of products for a certain category, for example Cartazes, which is the 000001 through a SQL?

Updating

inserir a descrição da imagem aqui

  • cat_produto in tbl_produtos is the name or ID of the category?

  • Beast cat_produto is the id of the category inside tbl_produtos !!!

  • The code 000001 is char or int?

  • The code 000001 is int.

  • 1

    @Marcosvinicius you can do as in my reply, a subquery, the query will return the same thing that already returns today in your application but with a virtual field "quantity" that was added according to the quantity of products in each category.

  • I made two improvements, now listed the categories that have no products and added the sort by category names.

Show 1 more comment

3 answers

9


A solution with good performance and readability can be obtained with the use of 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;

2

You can use a subQuerie 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

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);?>)

Browser other questions tagged

You are not signed in. Login or sign up in order to post.