 |
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
ederbl Novato


Registrado: Terça-Feira, 13 de Fevereiro de 2018 Mensagens: 7
|
Enviada: Qui Abr 25, 2019 2:46 pm Assunto: Selecionar apenas produtos encalhados Firebird [RESOLVIDO] |
|
|
Olá pessoal , gostaria que me ajudassem a criar esse comando. Estou tentando buscar no bando de dados do sistema de minha empresa os produtos que não tiveram saída.
No caso, as tabelas usadas são:
VENDA1 V1 (CAMPOS: CODIGO_VENDA, DATA_VENDA)
VENDA2 V2 (CAMPOS: CODIGO_VENDA, CODIGO_PRODUTO)
ESTOQUES E (CAMPOS: CODIGO_PRODUTO, ESTOQUE, FILIAL)
O objetivo:
Selecionar V11.DATA_VENDA, V2.CODIGO_VENDA, V2.CODIGO_PRODUTO, E.ESTOQUE, V1.DATA_VENDA
DE VENDA1 V1, VENDA2 V2, ESTOQUES E
ONDE O ESTOQUE É >0
E V1.CODIGO_VENDA = V2.CODIGO_VENDA
E E.CODIGO_PRODUTO = V2.CODIGO_PRODUTO
E V1.DATA_VENDA < (HOJE - 200 DIAS) *No caso que não teve venda nos ultimos 200 dias*
*MOSTRAR APENAS A ULTIMA DATA DE VENDA
*NÃO REPETIR OS CÓDIGOS
Espero que eu tenha me expressado bem aqui. Aguardo seus comentários.

Editado pela última vez por ederbl em Sex Abr 26, 2019 11:28 am, num total de 1 vez |
|
Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qui Abr 25, 2019 4:01 pm Assunto: |
|
|
Boa tarde,
Qual versão do Firebird você está utilizando?
Você precisa mesmo que a query retorne o campo codigo_venda? E se existirem várias vendas do mesmo produto no dia da última venda?
Editado pela última vez por imex em Seg Set 20, 2021 10:11 am, num total de 1 vez |
|
Voltar ao Topo |
|
 |
ederbl Novato


Registrado: Terça-Feira, 13 de Fevereiro de 2018 Mensagens: 7
|
Enviada: Qui Abr 25, 2019 4:32 pm Assunto: Selecionar apenas produtos encalhados FIREBIRD |
|
|
imex escreveu: | Boa tarde,
Qual versão do Firebird você está utilizando?
Você precisa mesmo que a query retorne o campo codigo_venda? E se existirem várias vendas do mesmo produto no dia da última venda?
|
Olá, a versão do firebird é 2.5. Não é necessário retornar o codigo_venda, o que é indispensável mesmo é o código do produto, a data e o estoque. Se existirem várias vendas do mesmo produto no dia pode retornar qualquer um (tipo apenas a venda com o codigo_venda maior, ou apenas o primeiro que encontrar)
Obrigado pela resposta |
|
Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qui Abr 25, 2019 5:51 pm Assunto: |
|
|
Já que não é necessário retornar o codigo_venda, experimente fazer uns testes dessa forma:
Código: | select
e.codigo_produto,
e.estoque,
max(v1.data_venda) as data_venda
from Estoques as e
inner join venda2 as v2
on v2.codigo_produto = e.codigo_produto
inner join venda1 as v1
on v1.codigo_venda = v2.codigo_venda
where
e.estoque > 0
group by
e.codigo_produto,
e.estoque
having
max(v1.data_venda) < dateadd(day, -200, current_date) |
Acredito que a consulta ficaria mais complexa para retornar qualquer codigo_venda do dia da última venda, pois acho que seria necessário um novo passo para pesquisar os códigos após obter a data no trecho acima.
Espero que ajude |
|
Voltar ao Topo |
|
 |
ederbl Novato


Registrado: Terça-Feira, 13 de Fevereiro de 2018 Mensagens: 7
|
Enviada: Sex Abr 26, 2019 11:27 am Assunto: Produtos sem vendas Firebird 2.5 [RESOLVIDO] |
|
|
imex escreveu: | Já que não é necessário retornar o codigo_venda, experimente fazer uns testes dessa forma:
Código: | select
e.codigo_produto,
e.estoque,
max(v1.data_venda) as data_venda
from Estoques as e
inner join venda2 as v2
on v2.codigo_produto = e.codigo_produto
inner join venda1 as v1
on v1.codigo_venda = v2.codigo_venda
where
e.estoque > 0
group by
e.codigo_produto,
e.estoque
having
max(v1.data_venda) < dateadd(day, -200, current_date) |
Acredito que a consulta ficaria mais complexa para retornar qualquer codigo_venda do dia da última venda, pois acho que seria necessário um novo passo para pesquisar os códigos após obter a data no trecho acima.
Espero que ajude |
Já é o suficiente, me ajudou muito! Obrigado imex |
|
Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|