Ir para conteúdo
Fórum Script Brasil
  • 0

pesquisa com varias somas de varios dados com varios criterios no mysq


ninav

Pergunta

Olá, estou quebrando cabeça alguns dia nesta consulta em php utilizando o mysql.preciso fazer um select onde me retorne varias somas separadas, ou melhor, tenho 10 lojas onde preciso demonstrar em uma tabela o que foi vendido de cada item(solicitado)dentro de um periodo(solicitado)de todas essas lojas demonstrados separadamente neste seguinte formato de tabela:

produto codigo interno codigo barra F01 F02 F03 F04 F05 F06 F07 F08 F09 F10 TOTAL GERAL

COCA-COLA 1L 2545 789100012001211 05 02 02 01 03 07 10 15 01 01 47 UND

COCA-COLA 250ML 2546 ........... 0 0 0 0 02 01 01 0 0 0 4 UND

Segue código da consulta abaixo:

$query = "SELECT p.nome,p.cod_int,p.cod_barra,sum(m.quantidade) AS QUANT,l.cod_loja

FROM produto AS p

INNER JOIN mercloja AS m ON m.cod_int = p.cod_int

INNER JOIN loja AS l ON m.loja = l.cod_loja

WHERE m.data_cupom BETWEEN '".$dtIn."' AND '".$dtFn."'

AND p.nome LIKE '".$_POST['nome']."%'AND m.sit_cupom LIKE 'V'

GROUP BY m.cod_int

ORDER BY p.nome";

$resultado = mysql_query($query,$conexao);

while($linha = mysql_fetch_array($resultado)){

$cnome = $linha['nome'];

$cint = $linha['cod_int'];

$cbarra = $linha['cod_barra'];

echo "<tr>";

echo "<td>".$cnome."</td>";

echo "<td>".$cint."</td>";

echo "<td>".$cbarra."</td>";

$codloja= $linha1['cod_loja'];

while($codloja < 10 ){

$qtdf01= $qtdf01+$linha1['QUANT'];

$qtdf02= $qtdf02+$linha1['QUANT'];

$qtdf03= $qtdf03+$linha1['QUANT'];

$qtdf04= $qtdf04+$linha1['QUANT'];

$qtdf05= $qtdf05+$linha1['QUANT'];

$qtdf06= $qtdf06+$linha1['QUANT'];

$qtdf07= $qtdf07+$linha1['QUANT'];

$qtdf08= $qtdf08+$linha1['QUANT'];

$qtdf09= $qtdf09+$linha1['QUANT'];

$qtdf10= $qtdf10+$linha1['QUANT'];

}

}

$totqtde=$totqtde+$linha1['QUANT'];

echo "<tr>";

echo "<td align= right>".$qtdf01."</td>";

echo "<td align= right>".$qtdf02."</td>";

echo "<td align= right>".$qtdf03."</td>";

echo "<td align= right>".$qtdf04."</td>";

echo "<td align= right>".$qtdf05."</td>";

echo "<td align= right>".$qtdf06."</td>";

echo "<td align= right>".$qtdf07."</td>";

echo "<td align= right>".$qtdf08."</td>";

echo "<td align= right>".$qtdf09."</td>";

echo "<td align= right>".$qtdf10."</td>";

}

echo "<td align= right>".$totqtde." unds</td>";

}

obs: com este codigo ele dá o erro que ultrapassou o limite de 360s de consulta...e não retorna nada e se eu tirar o while que verifica a loja ele demonstra apenas a quantidade total em todas as f01.....

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Aqui tem um erro de lógica:

$codloja= $linha1['cod_loja'];

while($codloja < 10 ){

$qtdf01= $qtdf01+$linha1['QUANT'];
$qtdf02= $qtdf02+$linha1['QUANT'];
$qtdf03= $qtdf03+$linha1['QUANT'];
$qtdf04= $qtdf04+$linha1['QUANT'];
$qtdf05= $qtdf05+$linha1['QUANT'];
$qtdf06= $qtdf06+$linha1['QUANT'];
$qtdf07= $qtdf07+$linha1['QUANT'];
$qtdf08= $qtdf08+$linha1['QUANT'];
$qtdf09= $qtdf09+$linha1['QUANT'];
$qtdf10= $qtdf10+$linha1['QUANT'];
}

Vamos assumir que $linha['cod_loja'] tenha o valor igual a 5, neste caso isso:

while($codloja < 10 ){

Ficaria:

while(5 < 10 ){

Só que isso faria o laço ficar rodando para sempre, já que 5 ($codloja) sempre será menor do que 10, lembre-se que um laço fica rodando até a condição que é validada nele se tornar falsa, ou seja, dentro dele você teria que usar um break ou incrementar o $codloja para ele em algum momento se tornar maior do 10.

Link para o comentário
Compartilhar em outros sites

  • 0
Aqui tem um erro de lógica:

$codloja= $linha1['cod_loja'];

while($codloja < 10 ){

$qtdf01= $qtdf01+$linha1['QUANT'];
$qtdf02= $qtdf02+$linha1['QUANT'];
$qtdf03= $qtdf03+$linha1['QUANT'];
$qtdf04= $qtdf04+$linha1['QUANT'];
$qtdf05= $qtdf05+$linha1['QUANT'];
$qtdf06= $qtdf06+$linha1['QUANT'];
$qtdf07= $qtdf07+$linha1['QUANT'];
$qtdf08= $qtdf08+$linha1['QUANT'];
$qtdf09= $qtdf09+$linha1['QUANT'];
$qtdf10= $qtdf10+$linha1['QUANT'];
}

Vamos assumir que $linha['cod_loja'] tenha o valor igual a 5, neste caso isso:

while($codloja < 10 ){

Ficaria:

while(5 < 10 ){

Só que isso faria o laço ficar rodando para sempre, já que 5 ($codloja) sempre será menor do que 10, lembre-se que um laço fica rodando até a condição que é validada nele se tornar falsa, ou seja, dentro dele você teria que usar um break ou incrementar o $codloja para ele em algum momento se tornar maior do 10.

mas o codigo em si esta correto,não é ? ou teria outra forma de fazer esta tabela? e para incrementar teria apenas q ir colocando codloja++

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...