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

Tabela do Join de forma condicional


rodrigo.moraes

Pergunta

Srs,

Estou com problema ao criar uma Stored Procedure baseada em um Select "Hard-Code" existente em um sistema legado.

O banco de dados é Sybase.

Minha dúvida está destacada abaixo:

Exemplo de select:

Parametros:

flag1 char(1)

Select

a.campo1,

b.campo2,

c.campo3

from

tabela1 a

,tabela2 b

,tabela3 c

If flag1 <> "" then <<<<------- dúvida

,tabela4 d

End If

Where

--relacionamentos

a.codigo = b.codigo

and b.cod_x = c.cod_x

If flag1 <> "" then <<<<------- dúvida

and a.campo5 = d.codigo

End If

Ou seja, como fazer para a tabela4 só fazer parte do join de acordo com o parametro flag1.

Agradeço desde já a ajuda.

Editado por rodrigo.moraes
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

cara no sql funcionou.....

testa ai....

IF FLAG1 <> ''

BEGIN

Select a.campo1,

b.campo2,

c.campo3

from Tabela1 a,

tabela2 b,

tabela3 c,

tabela4 d

Where a.codigo = b.codigo

and b.cod_x = c.cod_x

and a.campo5 = d.codigo

END

ELSE

Select a.campo1,

b.campo2,

c.campo3

from Tabela1 a,

tabela2 b,

tabela3 c

Where a.codigo = b.codigo

and b.cod_x = c.cod_x

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Boa Noite

Eu faria um pouco diferente.

Declare @flag1 char(1)

Select

a.Campo1,

b.Campo2,

c.Campo3

from Tabela1 a INNER JOIN Tabela2 b ON (a.Codigo = b.Codigo)

INNER JOIN Tabela3 c ON (b.Codigo = c.Codigo)

LEFT JOIN Tabela4 d ON (a.Campo5 = d.Codigo and @flag1 = 'S')

Espero ter ajudado

Abraços!

Link para o comentário
Compartilhar em outros sites

  • 0
Boa Noite

Eu faria um pouco diferente.

Declare @flag1 char(1)

Select

a.Campo1,

b.Campo2,

c.Campo3

from Tabela1 a INNER JOIN Tabela2 b ON (a.Codigo = b.Codigo)

INNER JOIN Tabela3 c ON (b.Codigo = c.Codigo)

LEFT JOIN Tabela4 d ON (a.Campo5 = d.Codigo and @flag1 = 'S')

Espero ter ajudado

Abraços!

PERFEITO!!!

Agradeço a ajuda de todos

Link para o comentário
Compartilhar em outros sites

  • 0
Boa Noite

Eu faria um pouco diferente.

Declare @flag1 char(1)

Select

a.Campo1,

b.Campo2,

c.Campo3

from Tabela1 a INNER JOIN Tabela2 b ON (a.Codigo = b.Codigo)

INNER JOIN Tabela3 c ON (b.Codigo = c.Codigo)

LEFT JOIN Tabela4 d ON (a.Campo5 = d.Codigo and @flag1 = 'S')

Espero ter ajudado

Abraços!

Boa Leonardo,

mandou muito bem,

realemente mais facil e com muito menos linha.

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...