Inquiridor
Ajuda com query

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
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 BlockDeclare
@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 @pessoaSelect
P.Nome, P.IdTelefone, T.Descricao from @Pessoa P Inner Join @Telefone T On P.IdTelefone = T.Codigo -
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
-
Narezi,
Mudei um pouco o código, veja se ajuda:
Code BlockDeclare
@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 IdTelefonefrom
@Pessoa P Inner Join @Telefone T On P.Codigo = T.CodigoPessoa -
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