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

(Resolvido) if dentro do select


flavioavilela

Pergunta

bom dia a todos....

fiz um select dessa forma:

select LF.*, Forn.Nome_Fantasia as Nome, Cli.Nome_Nome_Fantasia as Nome, CP.Descricao as Condicao_Pagamento, TD.Descricao as Tipo_Documento, D.Descricao as Departamento, PF.Plano from Lancamento_Financeiro LF
left join Cliente Cli on(LF.Codigo_Cli_For = Cli.Codigo)
left join Fornecedor Forn on(LF.Codigo_Cli_For = Forn.Codigo)
left join Condicao_Pagamento CP on(LF.Codigo_Forma_Pagamento = CP.Codigo)
left join Tipo_Documento TD on(LF.Codigo_Tipo_Documento = TD.Codigo)
left join Departamento D on(LF.Codigo_Departamento = D.Codigo)
left join Plano_Financeiro PF on(LF.Codigo_Plano = PF.Codigo)

ou seja, na tabela Lancamento_Financeiro eu salvei vários Codigos(Codigo_Departamento, Codigo_Cliente) e tal... só que, no campo Codigo_Cli_For, eu salvo ou o código do cliente ou o código do fornecedor, dependendo o que o usuário escolher na hora do lançamento, se é crédito (Cliente) ou débito(fornecedor).... ai, preciso que, ao realizar esse join, se for Crédito (Cliente), preciso fazer o join com a tabela de cliente. Se for Débito (Fornecedor), preciso fazer o join com a tabela Fornecedor..... alguém sabe como fazer isso????? fiz no exemplo acima uma forma bem genérica só para mostrar a minha idéia do que preciso...

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

flavioavilela, Boa Tarde!

Já fiz um sistema com a mesma finalidade, onde implementei uma tabela responsável por armazenar os cliente e fornecedores. Ou seja, na mesma tabela eu armazeno os cliente e fornecedores. Acredito que seja uma forma mais fácil.

Bom, mas vamos ao seu problema!

A Coluna cp.descricao que é responsável por guardar se é Crédito ou Débito?

Bom, vi seu problema, e me baseei em um problema parecido que resolvi.

Não sei se é a forma mais eficaz ou mais otimizada, mas resolveu, no meu caso. rs

Fiz uma adaptação no seu código, não tive como testar, pois não possuo suas tabelas. Teste ai no seu SQL.

SELECT lf.*,
       NOME=
       CASE 
           WHEN (cp.descricao = 'Crédito') THEN
                (SELECT cli.nome_nome_fantasia 
                 FROM   cliente cli 
                 WHERE  codigo_cli_for = cli.codigo)
           
           WHEN (cp.descricao = 'Débito') THEN
                (SELECT forn.nome_fantasia forn 
                 FROM   fornecedor forn 
                 WHERE  codigo_cli_for = forn.codigo)    
       END,
       cp.descricao  AS condicao_pagamento,
       td.descricao  AS tipo_documento,
       d.descricao   AS departamento,
       pf.plano,
     
FROM   lancamento_financeiro lf
           LEFT JOIN condicao_pagamento cp
                   ON( lf.codigo_forma_pagamento = cp.codigo )
           LEFT JOIN tipo_documento td
                   ON( lf.codigo_tipo_documento = td.codigo )
           LEFT JOIN departamento d
                  ON( lf.codigo_departamento = d.codigo )
           LEFT JOIN plano_financeiro pf
                  ON( lf.codigo_plano = pf.codigo )

Abraço

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,3k
    • Posts
      652,5k
×
×
  • Criar Novo...