none
Ajuda com query RRS feed

  • Pergunta

  • fala ae galera.

     

    Tenho o seguinte problema

     

    tenho um tabela de pessoas e uma tabela de telefone

     

    para trazer o telefone precisa fazer um join com a tabela de telefone, porem tenho um id de telefone preferencial na tabela de telefone que é igual a 1, porem existem pessoa que não tem id de telefone preferencial que fica igual a 0

    preciso trazer as pessoas que tem id de telefone preferencial igual a 1 e quem não tiver id de telefone preferencial igual a 1, trazer o telefone com id igual a 0.

     

    Como faço isso??

     

    obrigado

    quarta-feira, 24 de outubro de 2007 14:22

Todas as Respostas

  • Narezi,

     

    Você deseja retornar as pessoas com id do telefone preferencial igual 1, e também aqueles que tiverem o id igual a 0?

     

    Veja se este código de exemplo poderá te ajudar:

     

    Code Block

    Declare @Telefone Table

    (Codigo Int Identity(0,1),

    Descricao VarChar(20))

     

    Insert Into @Telefone Values('Preferencial')

    Insert Into @Telefone Values('Não-Preferencial')

     

    Declare @Pessoa Table

    (Codigo Int Identity(1,1),

    Nome VarChar(10),

    IdTelefone Int)

     

    Insert Into @Pessoa Values('Junior',1)

    Insert Into @Pessoa Values('Eu',1)

    Insert Into @Pessoa Values('Você',1)

    Insert Into @Pessoa Values('Ele',0)

    Insert Into @Pessoa Values('Ela',0)

    Select * from @pessoa

     

    Select P.Nome, P.IdTelefone, T.Descricao from @Pessoa P Inner Join @Telefone T

    On P.IdTelefone = T.Codigo

     

     

     

    quarta-feira, 24 de outubro de 2007 15:03
  • Na verdade preciso retornar as pessoas que tem id igual 1 e as que não tem id igual 1 retornar o telefone com id 0

    as pessoa tem geralmente varios telefones, sendo que 1 deles tem id = 1 e outro igual a 0. Quando nào tiver o telefone com id = 1 trazer o com id 0

     

    obrigado

     

    quarta-feira, 24 de outubro de 2007 15:12
  • Narezi,

     

    Mudei um pouco o código, veja se ajuda:

     

    Code Block

    Declare @Pessoa Table

    (Codigo Int Identity(1,1),

    Nome VarChar(10),

    IdTelefone Int)

     

    Insert Into @Pessoa Values('Junior',1)

    Insert Into @Pessoa Values('Eu',1)

    Insert Into @Pessoa Values('Você',0)

    Insert Into @Pessoa Values('Ele',0)

    Insert Into @Pessoa Values('Ela',0)

     

    Declare @Telefone Table

    (Codigo Int Identity(0,1),

    CodigoPessoa Int,

    IdTelefone Int,

    Telefone VarChar(10))

     

    Insert Into @Telefone Values(1,1,'9999-9000')

    Insert Into @Telefone Values(1,0,'8888-8888')

    Insert Into @Telefone Values(2,1,'7777-9000')

    Insert Into @Telefone Values(3,0,'6666-8888')

     

    Select P.Nome, P.IdTelefone,

    Case P.idtelefone

    When 0 Then (Select Telefone from @telefone where idtelefone=0 and codigopessoa=p.codigo)

    When 1 Then T.Telefone

    End As IdTelefone

    from @Pessoa P Inner Join @Telefone T

    On P.Codigo = T.CodigoPessoa

     

     

    quarta-feira, 24 de outubro de 2007 15:44
  • Da uma olhada no meu codigo...

     

    select re.cd_estrutura_comercial as re
           ,gv.cd_estrutura_comercial as gv
           ,setor.cd_estrutura_comercial as setor
           ,setor.no_estrutura_comercial as nome_setor
           ,p.cd_pessoa as cod_cn
           ,p.NO_COMPLETO as nome_cn
           ,p.DS_ENDERECO as endereco
           ,p.CD_CEP as cep
           ,p.DS_BAIRRO as bairro
           ,p.SG_UF as uf
           ,p.NO_CIDADE as cidade
        ,tel.id_telefone_preferencial
        ,'('+ convert(varchar,tel.nm_ddd) + ') ' + convert(varchar,tel.nm_telefone) as telefone
           ,p.DT_INICIO as dt_inicio
    from  t_pessoa p
    left join t_telefone_pessoa  tel on p.cd_pessoa = tel.cd_pessoa
         ,t_estrutura_comercial gm
         ,t_estrutura_comercial re
      ,t_estrutura_comercial gv
      ,t_estrutura_comercial setor
    where gm.cd_tipo_estrutura_comercial = 1
    and gm.cd_estrutura_comercial = 4
    and re.cd_tipo_estrutura_comercial = 2
    and re.cd_estrutura_comercial_pai = gm.cd_estrutura_comercial
    and gv.cd_tipo_estrutura_comercial = 3
    and gv.cd_estrutura_comercial_pai = re.cd_estrutura_comercial
    and setor.cd_tipo_estrutura_comercial = 4
    and setor.cd_estrutura_comercial_pai = gv.cd_estrutura_comercial
    and p.cd_tipo_estrutura_comercial = setor.cd_tipo_estrutura_comercial
    and p.cd_estrutura_comercial = setor.cd_estrutura_comercial
    and id_situacao <> 3
    and tel.id_telefone_preferencial = 1
    and p.cd_tipo_papel = 2

    quarta-feira, 24 de outubro de 2007 16:01