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 

juncao de 2 querys sql server (Resolvido)

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


Registrado: Sexta-Feira, 17 de Julho de 2015
Mensagens: 215
Localização: Recife

MensagemEnviada: Sex Mar 17, 2017 10:12 am    Assunto: juncao de 2 querys sql server (Resolvido) Responder com Citação

tenho o seguinte select
Código:
select E.nf,data,E.codigo,E.estoque_id,E.descricao,G.ncm,E.quantidade,E.unitario,E.total,E.nfvenda_id,F.DATA_nsu from  itens_nf_venda e inner JOIN nf_venda f ON f.nfvenda_id = E.nfvenda_id
left join ESTOQUE g on G.ESTOQUE_ID= E.ESTOQUE_ID
where F.data_nsu between '2017-02-01' and '2017-02-28' AND F.Grupo_CFOP='VENDA' AND F.processar='SIM' AND F.IMPRIMIU='SIM' AND F.CANCELADA IS NULL


e tenho este :
Código:
SELECT NCM,DESCRICAOMONO,MONOFASICO FROM NCM_MONOFASICOS where Monofasico='sim' and  ncm = :pncm8 or ncm = :pncm65 or ncm = :pncm4


onde no delphi passava a seguinte condição para o label:
Código:
  dm.QueryNCM.SQL.Add('SELECT NCM, DESCRICAOMONO, MONOFASICO FROM NCM_MONOFASICOS');
  dm.QueryNCM.SQL.Add('where Monofasico =:status and');
  dm.QueryNCM.SQL.Add('( ncm = :pncm8 or ncm = :pncm65 or ncm = :pncm4 )');
  dm.QueryNCM.Parameters.ParamByName('status').Value := 'sim';
  dm.QueryNCM.Parameters.ParamByName('pncm8').Value := dm.Qrefgeren.fieldbyname('ncm').AsString;
  dm.QueryNCM.Parameters.ParamByName('pncm65').Value := LeftStr(dm.Qrefgeren.fieldbyname('ncm').AsString,PosEx('.', dm.Qrefgeren.fieldbyname('ncm').AsString, 6) - 1);
  dm.QueryNCM.Parameters.ParamByName('pncm4').Value := LeftStr(dm.Qrefgeren.fieldbyname('ncm').AsString, 4);
  dm.QueryNCM.Open;


        //se o retorno da pesquisa do ncm retornar vazio ira receber(è isso?)
  if dm.QueryNCM.RecordCount = 0 then
    Lbncm.Caption:= 'NÃO'
  else
    Lbncm.Caption:= dm.QueryNCM.fieldbyname('MONOFASICO').AsString;



Eu gostaria de unir tudo numa única query , seria possível?


Editado pela última vez por tiagorogers1 em Sex Mar 17, 2017 5:40 pm, 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: Sex Mar 17, 2017 11:24 am    Assunto: Responder com Citação

Bom dia,

Os parâmetros da segunda query são preenchidos com valores retornados pela primeira query?
Se sim, acredito que a primeira query retorne vários registros, então qual registro deve ser utilizado na segunda query?


Editado pela última vez por imex em Ter Mar 07, 2023 5:39 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
tiagorogers1
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 17 de Julho de 2015
Mensagens: 215
Localização: Recife

MensagemEnviada: Sex Mar 17, 2017 11:53 am    Assunto: Responder com Citação

isso Imex, a primeira Query retorna os sequintes registros:


para a segunda Query validar os ncm , e a ideia é se for monofásico (validar a coluna mofásico da query que já tem o SIM, colocar o sim na nova coluna, se ele não validar, então NAO)


Editado pela última vez por tiagorogers1 em Sex Mar 17, 2017 5:41 pm, 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: Sex Mar 17, 2017 2:18 pm    Assunto: Responder com Citação

Confirma uma coisa... você quer adicionar uma coluna para indicar se é monofásico ou não no resultado da primeira query?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
tiagorogers1
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 17 de Julho de 2015
Mensagens: 215
Localização: Recife

MensagemEnviada: Sex Mar 17, 2017 2:30 pm    Assunto: Responder com Citação

isso mesmo , conforme a validação do critério da segunda query. tem critérios no codigo do Delphi. se ajudar a entender melhor, olha o post que vc me ajudou anteshttp://www.activedelphi.com.br/forum/viewtopic.php?t=91365&sid=270c2ec1938fee6bafe71cfc506f86ba
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: Sex Mar 17, 2017 3:15 pm    Assunto: Responder com Citação

Experimente fazer uns testes com a query abaixo para ver se é obtido o resultado esperado:

Código:
select
    E.nf,
    data,
    E.codigo,
    E.estoque_id,
    E.descricao,
    G.ncm,
    E.quantidade,
    E.unitario,
    E.total,
    E.nfvenda_id,
    F.DATA_nsu,
    o.ncm as ncmmono,
    coalesce(o.monofasico, 'NÃO') as monofasico
from itens_nf_venda e
inner JOIN nf_venda f ON f.nfvenda_id = E.nfvenda_id
left join ESTOQUE g on G.ESTOQUE_ID= E.ESTOQUE_ID
outer apply
(
    SELECT
        NCM,
        MONOFASICO
    FROM NCM_MONOFASICOS
    where
        Monofasico = 'sim' and
        (ncm = G.ncm or
         ncm = left(G.ncm, case when charindex('.', G.ncm, 6) > 0
                               then charindex('.', G.ncm, 6) - 1
                               else 0
                           end) or
         ncm = left(G.ncm, 4))
) as o
where
    F.data_nsu between '2017-02-01' and '2017-02-28' AND
    F.Grupo_CFOP = 'VENDA' AND
    F.processar = 'SIM' AND
    F.IMPRIMIU = 'SIM' AND
    F.CANCELADA IS NULL


Espero que ajude
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
tiagorogers1
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 17 de Julho de 2015
Mensagens: 215
Localização: Recife

MensagemEnviada: Sex Mar 17, 2017 4:17 pm    Assunto: Responder com Citação

tá 90% IMEX, só um ajuste, como esses da imagem:


esse ncm é monfasico

e na classificação do scritp ele disse que não é . olha ai como ficou :

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: Sex Mar 17, 2017 5:08 pm    Assunto: Responder com Citação

Então acho que a query inicial também não estava 100%.
Experimente deixar o Outer Apply da seguinte forma:

Código:
outer apply
(
    SELECT
        n.NCM,
        n.MONOFASICO
    FROM NCM_MONOFASICOS as n
    where
        n.Monofasico = 'sim' and
        G.ncm like n.NCM + '%'
) as o


Espero que ajude
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
tiagorogers1
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 17 de Julho de 2015
Mensagens: 215
Localização: Recife

MensagemEnviada: Sex Mar 17, 2017 5:39 pm    Assunto: Responder com Citação

Conferido e 100% agora, IMex. Muito Obrigado e um ótimo final de semana
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