Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) FireBird e Consulta Condicional


fernando ferrandini

Pergunta

Caros,

Primeiramente, nem sei se é possível fazer o que vou pedir, não sou especialista em BD. Mas peço ajuda , pois já estou 2 dias pesquisando, tentando e só tenho tomado na cabeça!

Situação:

Eu tenho uma tabela de Contatos de Cliente onde ( 1 Cliente tem N Contatos). A tabela Contatos possui 3 campos, são : Nome,Email,Principal

Onde "Principal" é referente ao contato ser Contato Principal ou não ( Valores 'S' e 'N').

Foi solicitado criar uma consulta que respeite esta lógica descrita abaixo:

Selecionar Nome,Email de Contatos onde :

Principal='S' e Email not null

Senão

Principal='N' e Email not null

Senão

Princilpal='S' e Email null

Senão

Principal='N' e Email Null

Ao nivel usuário : Ele quer no relatorio do cliente, com outras informações, eu adicione um contato de preferencia sendo principal com email, senão não-principal com email, senão principal sem email, senao não-principal sem email.

Porque isso? Porque usuário não quer campos nulos, só senao houver nenhum dos casos acima. Mas também não quer todos os contatos, só um que for de mais facil contato e importancia.

Agradeço aos DBA's de plantão se puderem me ajudar!

Editado por fernando ferrandini
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
Caros,

Primeiramente, nem sei se é possível fazer o que vou pedir, não sou especialista em BD. Mas peço ajuda , pois já estou 2 dias pesquisando, tentando e só tenho tomado na cabeça!

Situação:

Eu tenho uma tabela de Contatos de Cliente onde ( 1 Cliente tem N Contatos). A tabela Contatos possui 3 campos, são : Nome,Email,Principal

Onde "Principal" é referente ao contato ser Contato Principal ou não ( Valores 'S' e 'N').

Foi solicitado criar uma consulta que respeite esta lógica descrita abaixo:

Selecionar Nome,Email de Contatos onde :

Principal='S' e Email not null

Senão

Principal='N' e Email not null

Senão

Princilpal='S' e Email null

Senão

Principal='N' e Email Null

Ao nivel usuário : Ele quer no relatorio do cliente, com outras informações, eu adicione um contato de preferencia sendo principal com email, senão não-principal com email, senão principal sem email, senao não-principal sem email.

Porque isso? Porque usuário não quer campos nulos, só senao houver nenhum dos casos acima. Mas também não quer todos os contatos, só um que for de mais facil contato e importancia.

Agradeço aos DBA's de plantão se puderem me ajudar!

Achei a solução galera. Eu estava querendo complicar demais.. quando parei pra pensar mesmo.. achei ate fácil d+ !! Segue abaixo para aqueles que precisem:

BEGIN

select FIRST 1 co.ccontato,co.cemail from mp101 co

where co.cprinc = 'S' and co.ccliente =:CCLIENTE and (co.cemail is not null or co.cemail <> ' ')

INTO :CCONTATO,

:CEMAIL;

IF(CCONTATO is null) THEN

BEGIN

select FIRST 1 co.ccontato,co.cemail from mp101 co

where co.cprinc = 'N' and co.ccliente =:CCLIENTE and (co.cemail is not null or co.cemail <> ' ')

INTO :CCONTATO,

:CEMAIL;

END

IF(CCONTATO is null) THEN

BEGIN

select FIRST 1 co.ccontato,co.cemail from mp101 co

where co.cprinc = 'S' and co.ccliente =:CCLIENTE and (co.cemail is null)

INTO :CCONTATO,

:CEMAIL;

END

IF(CCONTATO is null) THEN

BEGIN

select FIRST 1 co.ccontato,co.cemail from mp101 co

where co.cprinc = 'N' and co.ccliente =:CCLIENTE and (co.cemail is null)

INTO :CCONTATO,

:CEMAIL;

END

IF(CCONTATO is null) THEN

BEGIN

select FIRST 1 co.ccontato,co.cemail from mp101 co

where co.cprinc IS NULL and co.ccliente =:CCLIENTE and (co.cemail is not null)

INTO :CCONTATO,

:CEMAIL;

END

SUSPEND;

END

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...