ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Selecionar apenas produtos encalhados Firebird [RESOLVIDO]

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
ederbl
Novato
Novato


Registrado: Terça-Feira, 13 de Fevereiro de 2018
Mensagens: 7

MensagemEnviada: Qui Abr 25, 2019 2:46 pm    Assunto: Selecionar apenas produtos encalhados Firebird [RESOLVIDO] Responder com Citação

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.

Very Happy


Editado pela última vez por ederbl em Sex Abr 26, 2019 11:28 am, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qui Abr 25, 2019 4:01 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
ederbl
Novato
Novato


Registrado: Terça-Feira, 13 de Fevereiro de 2018
Mensagens: 7

MensagemEnviada: Qui Abr 25, 2019 4:32 pm    Assunto: Selecionar apenas produtos encalhados FIREBIRD Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qui Abr 25, 2019 5:51 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
ederbl
Novato
Novato


Registrado: Terça-Feira, 13 de Fevereiro de 2018
Mensagens: 7

MensagemEnviada: Sex Abr 26, 2019 11:27 am    Assunto: Produtos sem vendas Firebird 2.5 [RESOLVIDO] Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB