Select com count condicionado

03/02/2023

0

Boa tarde.

Executando a seguinte select:

Select caixas,
(Select count (*) from retornos where retornos.codigo = entradas.codigo) from Entradas
where entradas.numero = ''257''

Preciso adaptar para mostrar somente os registros em que a coluna "caixas" seja diferente da coluna count. É possível isso com select?
Agradeço.
Alexandre

Alexandre

Responder

Posts

03/02/2023

Frank Hosaka

Para mim, retorno e entrada é a mesma coisa.
Na minha cabeça, eu teria uma tabela entrada assim: id,data, nf, valor, CFOP. Se não me falha a memória, o CFOP de retorno é 132.
Para contar todos os retornos, a consulta seria assim "select count(id) as retorno from entrada where CFOP=132 or CFOP=232 or CFOP=332";
Responder

03/02/2023

Frank Hosaka

Para mim, retorno e entrada é a mesma coisa.
Na minha cabeça, eu teria uma tabela entrada assim: id,data, nf, valor, CFOP. Se não me falha a memória, o CFOP de retorno é 132.
Para contar todos os retornos, a consulta seria assim "select count(id) as retorno from entrada where CFOP=132 or CFOP=232 or CFOP=332";

Por outro lado, você fala em caixas na consulta.
Nesse caso, precisamos de mais duas tabelas, a de produtos e a historia_dos_produtos.

vamos criar o id=1 na nf de entrada com CFOP 132, com valor de R$ 10,00.
vamos criar o id=1 na tabela de produtos com o nome de repolho, com o custo de R$ 5,00.
vamos criar o id=1 na tabela historia_dos_produtos, onde temos identrada=1, idproduto=1, quantidade=10, total=[não permitido utilizar] quando CFOP=132.

O MySQL permite ajuntar todas as tabelas, mas procurar por caixas de repolho quando ele foi planejado para usar unidades, aí a coisa complica.
Responder

03/02/2023

Emerson Nascimento

adapte:
select
	e.caixas,
	coalesce(count(r.codigo),0) retorno
from
	entradas e
left join
	retornos r
	on r.codigo = e.codigo
where
	e.numero = '257'
group by
	e.caixas
having
	e.caixas <> coalesce(count(r.codigo),0)

Responder

03/02/2023

Arthur Heinrich

select e.caixas, r.qtde
from
  ( select codigo, count(1) qtde
    from retornos
    group by codigo ) r
  join entradas e
    on e.codigo = r.codigo
where
  e.numero = '257' and
  e.caixas <> r.qtde

Responder

04/02/2023

Alexandre

Obrigado a todos que responderam. Deu certo a dica do Emerson.
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar