none
select RRS feed

  • Pergunta

  • Bom dia a todos,

     

    Estou fazendo um select grande no Sql 2000 que tem como base uma tabela, vamos chamá-la de tbl_Principal.

     

    Meu problema é que eu uso outras tabelas para condicionar meu select. Só que estas tabelas adicionais não necessitam ter todos os campos que a tbl_Principal vai ter.

    No caso, eu diria para fazer um left join, porém se eu coloco as minhas condições  das tabelas secundárias dentro do left join, meu select vai retornar todos os valores, e se eu coloco dentro do where, ele vai me retornar apenas linhas que tem nesta tabela secundária. Exemplo:

    A tabela principal tem meus IDs, e Nome.

    1      Pedro

    2     Marcelo

    Uma tabela secundária tem NomePai e NomeMae por exemplo a partir do ID. No caso, Pedro não terá Pai e mãe.

    2   paiMarcelo   maeMarcelo

     

    No meu caso, teremos pessoas sem mae e/ou pai, e se eu coloca-se como clausula do left join: nomePai = IsNull(@NomePai, '') and NomeMae = IsNull(@NomeMae, ''), ele irá me retornar todos os valores.

    1 Pedro      Null              Null

    2 Marcelo  paiMarcelo maeMarcelo

     

    E seu eu colocasse esta condição no meu where, ele só irá me retornar as pessoas que possuem pai e/ou mãe, deixando os sem parente fora, (no caso de @NomePai e @NomeMae serem null)

    2 Marcelo   paiMarcelo  maeMarcelo

     

    Alguem tem alguma idéia de como solucionar isto??

    Agradeço desde já,

    Pedro

    sexta-feira, 16 de junho de 2006 12:21

Todas as Respostas

  • Pedro,

    Bem com left join não vai conseguir fazer isso, mas o outer join ele vai retornar todos os pais e maes mesmo com null ou não. Então e so trocar por outer join agora em termos de performance meu amigo pense que o outer join nãp é bom.

    Qualquer duvida retorne.

     

     

    sexta-feira, 16 de junho de 2006 12:26