Jump to content
Alessandro Almeida

DISTINCT + SUM

Recommended Posts

Prezados,

Estou precisando somar a coluna QUANTIDADE que são consultadas com um "DISTINCT material".

Segue código até o "DISTINCT material" 

...
$busca_query = mysql_query("SELECT distinct material FROM material WHERE material LIKE '%$busca%' AND quantidade LIKE '%$busca1%' ORDER BY material ASC")or die(mysql_error());//faz a busca com as palavras enviadas


if (empty($busca_query)) { //Se nao achar nada, lança essa mensagem
    echo "Nenhum registro encontrado.";
}

// quando existir algo em '$busca_query' ele realizará o script abaixo.
while ($dados = mysql_fetch_array($busca_query)) {
?>

    <tr width="100%">        
        <td width="82%"><?php echo "$dados[material]<br />";?></td>    
        <td width="10%"><?php echo "$dados[quantidade] <br />";?>
...

Share this post


Link to post
Share on other sites

Pintou mais uma nesse mesmo tópico:

$busca_query = mysql_query("SELECT m1.material, m1.quantidade, totalquantidade, m1.minimoestoque
FROM (
   SELECT material, unidades, SUM(quantidade) as totalquantidade, minimoestoque 
   FROM material 
   GROUP BY material
) m1
WHERE m1.material LIKE '%$busca%' AND totalquantidade LIKE '%$busca1%'
ORDER BY m1.material ASC")or die(mysql_error());//faz a busca com as palavras enviadas


if (empty($busca_query)) { //Se não achar nada, lança essa mensagem
    echo "Nenhum registro encontrado.";
}

// quando existir algo em '$busca_query' ele realizará o script abaixo.
while ($dados = mysql_fetch_array($busca_query)) {
?>

	<tr style="<?php
						if ( $dados[quantidade] <= $dados[minimoestoque]){
							echo "background-color:rgba(255,0,0,0.2);" ;
						}
						?>">		

A variável $dados[quantidade] recebe apenas o valor da primeira linha do GROUP BY material.
São 5 linhas para cada material.

 

Preciso que interprete o valor de cada linha.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By granderodeo
      No meu código $this->details() me retorna todos os detalhes dos produtos, tais como ID, nome do produto, descrição etc. No carrinho de compras quando o usuário finaliza a compra os dados dos itens que ele pediu são inseridos no BD. O problema é que cada produto tem um nome, e quando o usuário finaliza a compra está sendo inserido apenas o Nome do primeiro produto do carrinho repetitivamente. Vejam na foto que o ID do produto é diferente, mas o nome é repetido em todos. Tentei fazer um foreach para tentar resolver o problema, mas continua a mesma coisa. Se alguém puder me ajudar por gentileza, agradeço :)
      $this->start(); foreach($this->details() as $product_name){ $product = $product_name['product_name']; } // Insert the items if ($pass) { $this->details(); $this->orderID = $this->lastID; $sql = "INSERT INTO `orders_items` (`order_id`, `product_id`, `quantity`, `product_name`) VALUES "; $cond = []; foreach ($_SESSION['cart'] as $id=>$qty) { $sql .= "(?, ?, ?, ?),"; array_push($cond, $this->orderID, $id, $qty, $product); } $sql = substr($sql, 0, -1) . ";"; $pass = $this->exec($sql, $cond); }  

    • By ramonjba
      Bom dia! Pessoal, estou muito precisando da ajuda dos Srs. Tenho uma tabela, onde a cada minuto, meu script insere dados referente a consulta SNMP de determinado equipamento. Tenho uma pagina, onde os dados que a consulta coletou diferente do dado atual, é mostrado na tabela. O que acontece é o seguinte, estou utilizando o GROUP BY para selecionar apenas os dados diferentes da coluna 'canalEquipamento', mas, o problema é que, se eu estiver com o Canal registrado na tabela em 5540, realizar a alteração para o 5500, e depois voltar para o 5540, minha consulta não retorna o dado duplicado. Não posso simplesmente mostrar todas as consultas na tabela, pois como eu disse, a inserção de dados na tabela é realizada a cada minuto, dessa forma, iria ter vários dados repetidos e uma consulta enorme. Então, o que eu preciso fazer, é que: a consulta retorne os dados , que o último não seja repetido, por exemplo: Tenho do registro 1 até 50, a coluna Canal está registrada em 5500, no registro 51 até o 500, o canal mudou para 5540, e do 501 até o 700, o canal voltou para o 5500. O que eu precisaria que a consulta retornasse, seria por exemplo:

      Consulta 1 - Canal 5500
      Consulta 51 - Canal 5540
      Consulta 501 - Canal 5500
       
      Segue a imagem do exemplo do problema atual, de como a query está retornando no momento (ela está listando apenas o primeiro registro do canal, se repetir o canal, ele não aparece mais).
      QUERY: SELECT ip_equipamento, canalEquipamento, lastSNMP FROM equipamentoSNMP WHERE idEquipamento='317' GROUP BY canalEquipamento ORDER BY idConsulta DESC
       

    • By Pitag346
      Olá pessoal, tudo bem ? Estou com um probleminha, espero que me ajudem...
       
      Seguinte, tenho uma tabela onde faço a exibição de alguns dados, tais como:
       
      NOME, 
      QUANTIDADE, 
      VALOR
       
      Eu quero buscar o valor, em outra tabela e exibir dentro desse while. Porem, ele está exibindo em todos os resultados.
      Seguinte, 
      Cada usuário que efetuar uma vendo do produto tal, é salvo na tabela VENDIDOS, onde o mesmo armazena o "ticket_promote_id". 
      Ao fazer o while das vendas, quero pegar o valor do produto em outra tabela com o "ticket_promote_id" que mencionei acima, porem ao fazer isso, ele me retorna o valor de um produto em todos os resultados do while. 
       
      Alguém sabe por que ? Segue meu código abaixo:
      $valueTotali = 0; while($dados = mysqli_fetch_assoc($sql_promoters)){ $user = $dados['id']; $sqlIngress = $conn->query("SELECT * FROM vendidos WHERE ticket_promote_id = '$user' "); $cont = $sqlIngress->num_rows; if($cont > 0){ $dadosIngress = mysqli_fetch_assoc($sqlIngress); $loteId = $dadosIngress['ticket_lote_id']; $sqlLote = $conn->query("SELECT * FROM ingress WHERE lote_id = '$loteId' "); while($data = mysqli_fetch_assoc($sqlLote)){ $valueTotali += $data['lote_preco']; } }  
      Segue a imagem da tabela com o mesmo valor sendo replicado em todos os resultados:

       
       
    • By PeeWee
      Opaa, o problema é o seguinte: preciso fazer uma busca no BD com esse código:
       
      $buscar = $pdo->prepare("SELECT * FROM `produtos` WHERE `titulo` LIKE '%$textoBusca%'");
              $buscar->execute();
              $retorno = array();
              $retorno['dados'] = '';
              $retorno['qtd'] = $buscar->rowCount();
              if($retorno['qtd'] >= 0){
                  while($conteudo = $buscar->fetchObject()){
                      $retorno['dados'] .= '<a href="#" id="'.$conteudo->id.':'.$conteudo->valor.'">'.utf8_encode($conteudo->titulo).'</a>';
                  }
              }
       
      O problema é que os resultados estão vindo duplicados (no BD só há 3 registros)
       
      Não tenho idéia do que fazer, se alguem puder ajudar agradeço desde já. 
       
    • By gustavodubarbosa
      Estou criando uma página que realize monitoramento de atividades.
      No meu código PHP defini uma variável que busca a data atual, depois passei o parâmetro de conexão com o banco de dados, depois criei um while para buscar as informações, dentro do while criei um if, a condição if é que se a variável data for igual a data cadastrada na atividade, exiba toda a atividade cadastrada. Mas o problema é que o if não está controlando essa condição, está passando direto e exibindo tudo.
      <?php $number = ('23'); $data = date("Y-m-d"); echo "$data"; /*Aqui realizo a conexão com o banco de dados, passo os dados para conectar, caso dê algum erro, o sistema me retorna uma mensagem de erro*/ $conect = mysqli_connect('localhost','root','','projeto_pessoal') or die ('Erro na conexão com o banco de dados'); /*Aqui passo o comando para realizar a busca no banco de dados, aplicando o filtro de pesquisa*/ $result_pesquisa = "SELECT * FROM cadastrar_atividade"; /*Neste momento, mando a execução, preciso passar como parametro a variável com a conexão e a variável com o comando, caso dê erro, será exibido uma mensagem*/ $resultado_pesquisa = mysqli_query($conect, $result_pesquisa); /*Aqui é aberto um laço de repetição para fazer uma varredura no banco de dados, em seguida realizo a exibição do que foi encontrado*/ ?> <h1>Resultado da Pesquisa</h1> <?php while($rows_pesquisa = mysqli_fetch_array($resultado_pesquisa)){ if($rows_pesquisa['prazo'] == $data) echo '<p class="title">'.'ID da atividade: '.'</p>'.'<p class="result">'.$rows_pesquisa['id'].'<br>'.'</p>'; echo '<p class="title">'.'Nome da atividade: '.'</p>'.'<p class="result">'.$rows_pesquisa['nome_atividade'].'<br>'.'</p>'; echo '<p class="title">'.'Descrição da atividade: '.'</p>'.'<p class="result">'.$rows_pesquisa['desc_atividade'].'<br>'.'</p>'; echo '<p class="title">'.'Prioridade: '.'</p>'.'<p class="result">'.$rows_pesquisa['prioridade'].'<br>'.'</p>'; echo '<p class="title">'.'Prazo: '.'</p>'.'<p class="result">'.$rows_pesquisa['prazo'].'<br>'.'</p>'; echo 'carregado'; echo '<hr></hr>'; } ?>  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.