Search counting result

Asked

Viewed 86 times

1

I search for a certain term and show the result, what is correct, now I need to show the quantity of each product by category, for example, search by the term "chair".

COZINHA (10)
DORMITÓRIO (05)

My search for the term was like this:

mysql_select_db($database_conexao, $conexao);
$query_rsBusca = "SELECT marca.descricao AS marca, 
                         produtos.id_produto, 
                         produtos.id_departamento,
                         produtos.id_subdepartamento,
                         produtos.id_marca, 
                         produtos.descricao AS prodDesc, 
                         produtos.codigo_msb 
                    FROM produtos INNER JOIN marca ON (produtos.id_marca = marca.id_marca) 
                   WHERE (produtos.descricao LIKE '%".$pesquisa."%')  OR 
                         (produtos.resumo LIKE '%".$pesquisa."%')     OR 
                         (produtos.codigo_msb LIKE '%".$pesquisa."%') OR 
                         (produtos.detalhes LIKE '%".$pesquisa."%')   OR 
                         (marca.descricao LIKE '%".$pesquisa."%') $ordena ";
// echo $query_rsBusca;
$rsBusca = mysql_query($query_rsBusca, $conexao) or die(mysql_error());
$row_rsBusca = mysql_fetch_assoc($rsBusca);
$totalRows_rsBusca = mysql_num_rows($rsBusca);

Then I made a new record set to show the categories and their values, it was like this:

mysql_select_db($database_conexao, $conexao);
$query_rsSoma = "SELECT 
                      departamento.descricao AS descricao,
                      COUNT(*) AS Registros
                    FROM
                      departamento 
                      INNER JOIN produtos ON (produtos.id_departamento = departamento.id_departamento)
                      INNER JOIN marca ON (produtos.id_marca = marca.id_marca)
                    WHERE
                      (produtos.descricao LIKE '%".$pesquisa."%')  OR 
                      (produtos.resumo LIKE '%".$pesquisa."%')     OR 
                      (produtos.codigo_msb LIKE '%".$pesquisa."%') OR 
                      (produtos.detalhes LIKE '%".$pesquisa."%')   OR 
                      (marca.descricao LIKE '%".$pesquisa."%'))
                    GROUP BY
                      departamento.id_departamento";
$rsSoma = mysql_query($query_rsSoma, $conexao) or die(mysql_error());
$row_rsSoma = mysql_fetch_assoc($rsSoma);
$totalRows_rsSoma = mysql_num_rows($rsSoma);    

But when executing the query, my server accuses the following error:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use

near ') GROUP BY departamento.id_departamento' at line 13.

1 answer

1


I managed to solve my problem, there was a ")" left at the end of the command, look how the complete Query was fixed.

mysql_select_db($database_conexao, $conexao);
$query_rsBusca = "SELECT marca.descricao AS marca, 
                         produtos.id_produto, 
                         produtos.id_departamento,
                         produtos.id_subdepartamento,
                         produtos.id_marca, 
                         produtos.descricao AS prodDesc, 
                         produtos.codigo_msb 
                    FROM produtos INNER JOIN marca ON (produtos.id_marca = marca.id_marca) 
                   WHERE (produtos.descricao LIKE '%".$pesquisa."%')  OR 
                         (produtos.resumo LIKE '%".$pesquisa."%')     OR 
                         (produtos.codigo_msb LIKE '%".$pesquisa."%') OR 
                         (produtos.detalhes LIKE '%".$pesquisa."%')   OR 
                         (marca.descricao LIKE '%".$pesquisa."%') $ordena ";
// echo $query_rsBusca;
$rsBusca = mysql_query($query_rsBusca, $conexao) or die(mysql_error());
$row_rsBusca = mysql_fetch_assoc($rsBusca);
$totalRows_rsBusca = mysql_num_rows($rsBusca);

mysql_select_db($database_conexao, $conexao);
$query_rsSoma = "SELECT 
                      departamento.descricao AS descricao,
                      COUNT(*) AS Registros
                    FROM
                      departamento 
                      INNER JOIN produtos ON (produtos.id_departamento = departamento.id_departamento)
                      INNER JOIN marca ON (produtos.id_marca = marca.id_marca)
                    WHERE
                      (produtos.descricao LIKE '%".$pesquisa."%')  OR 
                      (produtos.resumo LIKE '%".$pesquisa."%')     OR 
                      (produtos.codigo_msb LIKE '%".$pesquisa."%') OR 
                      (produtos.detalhes LIKE '%".$pesquisa."%')   OR 
                      /* AQUI TINHA UM ')' A MAIS */ 
                      (marca.descricao LIKE '%".$pesquisa."%')
                    GROUP BY
                      departamento.id_departamento";
$rsSoma = mysql_query($query_rsSoma, $conexao) or die(mysql_error());
$row_rsSoma = mysql_fetch_assoc($rsSoma);
$totalRows_rsSoma = mysql_num_rows($rsSoma);

Thanks for the help and tips.

Browser other questions tagged

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