preciso listar quantos de meus produtos em estoque estão abaixo de 3 unidades. fiz isso
SELECT count(*)
FROM estoque e, movimentacao m, entrada t, saida s
WHERE idestoque = estoque_idestoque
AND idmovimentacao = t.movimentacao_idmovimentacao
AND idmovimentacao = s.movimentacao_idmovimentacao
GROUP BY idestoque
HAVING sum( t.quantia ) - sum( s.quantia ) <= '3'
preciso apenas do valor total. e com o exemplo de cima ele aparec quantas vzs os produtos são movimentados.
alguem pode me ajudaR?
ninguem? é tão impossivel isso que eu qro? :?
Impossível não é, porém olhando só este trecho da sua consulta não dá para adivinhar muita coisa, deve ser algum erro de sintaxe, segue uma explicação/exemplo sobre COUNT:
Diferentemente das outras funções de grupos, o COUNT retorna o número de linhas que atende a uma determinada condição. Podemos utilizá-lo com um asterisco entre parênteses, para indicar que queremos saber a quantidade total de linhas, independentemente de haver linhas com colunas nulas ou não.
Caso queiramos saber quantas linhas existem e quais destas não têm valor nulo em determinada coluna, especificamos essa coluna entre parênteses.
[b]No exemplo a seguir aparece o total de registros na tabela Gravadora:[/b]
SELECT COUNT(*) FROM GRAVADORA;
COUNT (*)
4
Já neste exemplo o total de registros que possuem endereço:
SELECT COUNT(ENDERECO) FROM GRAVADORA;
COUNT (ENDERECO)
2
[b]Efeito semelhante poderíamos obter com o comando:[/b]
SELECT COUNT(*) FROM GRAVADORA
WHERE ENDERECO IS NOT NULL;
COUNT (*)
2
Outra forma interessante de utilizar o COUNT é acrescentando a ele uma cláusula DISTINCT. Veja o exemplo a seguir: Têm-se um total de 140 registros na tabela MUSICA_AUTOR. Se quisermos saber quantas são as músicas distintas, ou seja, sem repetições, visto que pode haver mais de um autor para uma mesma música, podemos utilizar o comando:
SELECT COUNT(*)
FROM MUSICA_AUTOR;
COUNT(*)
140
SELECT COUNT ( DISTINCT CODIGO_MUSICA )
FROM MUSICA_AUTOR;
COUNT ( DISTINCT CODIGO_MUSICA )
86
:thumbup:
tche boa a esplicação sobre count, mas nao consegui ainda fazer eu apenas preciso saber quantos produtos no estoque estão com a quantia inferior ou igual a 4 e nao todas as vzs que cada elemento foi sitado.
Olá, Boa Noite.
Experimente:
SELECT count(*)
FROM estoque e, movimentacao m, entrada t, saida s
WHERE idestoque = estoque_idestoque
AND idmovimentacao = t.movimentacao_idmovimentacao
AND idmovimentacao = s.movimentacao_idmovimentacao
GROUP BY idestoque
HAVING sum( t.quantia - s.quantia ) <= 3
Possíveis erros de sintaxe também, ali em WHERE idestoque = estoque_idestoque, você não informou a tabela do idestoque e do estoque_idestoque,
e também AND idmovimentacao = t.movimentacao_idmovimentacao.
Você pode fazer a subtração no SUM() mesmo, já que ele vai ‘juntar’ tudo que entrou e saiu subtraindo-os.
Tente com INNER JOIN ao invés da cláusula WHERE.
Como nosso colega InicianteJavaHenrique disse, só nesse trexo de código fica um pouco dificil entender a situação.
De qualquer forma, estamos aí, espero ajudar.
Vlw, até+.
o galera muito obrigado pela ajuda, vo tenta esplicar melhor
tenho em meu bd a tabela estoque que quarda o nome do produto tenho tambem a tabela movimentação que guarda dia que houve a movimentacao e o id do estoque e tenho as tabelas saida e entrada que guardão a quantia. foi a unica maneira que consegui desenvolver para meu estoque.
ai então preciso listar em minha jtable quais produtos estão carentes no estoque com o valor de estoque igual ou inferior a .
mas ate então nao to conseguindo apenas listar a quantia de linhas para inpor em minha jtable os itens consigo com a consulta
SELECT idestoque, cor, tamanho, S_I ,sum(t.quantia) - sum(s.quantia) FROM estoque e, movimentacao m, entrada t, saida s WHERE idestoque = estoque_idestoque and idmovimentacao = t.movimentacao_idmovimentacao and idmovimentacao = s.movimentacao_idmovimentacao GROUP BY idestoque HAVING sum(t.quantia) - sum(s.quantia) <= '3'
essa consulda mostra perfeita mente os objetos desejados
mas nao consigo fazer listar as linhas necessarias para popular essas informações.
se alguem puder me ajudar.
grato.
sem o DER fica impossivel saber o que vc quer…
cara o estoque não são essas tabelas:
Estoque - Produto - Movimentacao :
Estoque(id_produto,Quantidade)
Produto(id_produto,descricao_produto)
Movimentacao(id_produto,quantidade,data,tipo(entrada x saida) )
você não deveria diminuir a quantidade no estoque quando realizar alguma movimentacao de saida ?
e depois você faria apenas a query em cima da tabela Estoque x Produto, sem usar movimentação ? para fazer o que esta querendo …?
[quote=douglaskd]sem o DER fica impossivel saber o que vc quer…
cara o estoque não são essas tabelas:
Estoque - Produto - Movimentacao :
Estoque(id_produto,Quantidade)
Produto(id_produto,descricao_produto)
Movimentacao(id_produto,quantidade,data,tipo(entrada x saida) )
você não deveria diminuir a quantidade no estoque quando realizar alguma movimentacao de saida ?
e depois você faria apenas a query em cima da tabela Estoque x Produto, sem usar movimentação ? para fazer o que esta querendo …?[/quote]
erra bem assim que iria faze inicialmente mas nao consiguia listar a quantia presente no estoque.
um select basico:
select id_produto from Estoque where Quantidade > 0
ai você relaciona com produto…
pq é estranho eu ter o produto no estoque e ai subtrair a quantidade que esta na movimentação…