none
Problemas com criação de View RRS feed

  • Pergunta

  • Blz Pessoal,

     

    Estou com um problema, na minha aplicação tenho 4 tabelas com a seguinte estrutura.

     

    - Tb_Pessoa

    Id

    Nome

    Tipo(F/J)

     

    - Tb_Pessoa_Juridica

    id_Pessoa

    CPNJ

    Inscrição Estadual

     

    - Tb_Pessoa_Física

    id_Pessoa

    RG

    CPF

     

    - Tb_Pessoa_End

    Tipo

    Rua

     

     

    O problema que estou precisando fazer um view que mostre todos os dados juntos pois na mesma view o seja cnpj, cpf, rg.

     

    Outro forma que tentei fazer utilizando if e case e não consegui foi criar um campo que de acordo com o campo tb_Pessoa.Tipo seja selecionado o CNPJ ou CPF.

     

    valeu

     

     

     

     

     

     

     

     

     

     

     

    quinta-feira, 31 de janeiro de 2008 18:51

Respostas

  • Robinson,

    faça com UNION

    select p.id,
           p.nome,   
           'PJ' as tipo,
           CNPJ as cnpj_cpf,
           '' as RG,
           endereco.rua    
    from Tb_Pessoa p inner join Tb_Pessoa_Juridica pj on (p.id = pj.id_pessoa)
                     inner join Tb_Pessoa_End endereco on (endereco.id_pessoa = p.id)

    union

    select p.id,
           p.nome,   
           'PF' as tipo,
           CPF as cnpj_cpf,
           RG,
           endereco.rua
    from Tb_Pessoa p inner join Tb_Pessoa_Fisica pj on (p.id = pj.id_pessoa)         
                     inner join Tb_Pessoa_End endereco on (endereco.id_pessoa = p.id)    

    Ajude a melhorar o nosso Forum!
    Não esqueça de marca a mensagem como "útil", caso tenha ajudado.

    quinta-feira, 31 de janeiro de 2008 19:31

Todas as Respostas

  • Robinson,

    faça com UNION

    select p.id,
           p.nome,   
           'PJ' as tipo,
           CNPJ as cnpj_cpf,
           '' as RG,
           endereco.rua    
    from Tb_Pessoa p inner join Tb_Pessoa_Juridica pj on (p.id = pj.id_pessoa)
                     inner join Tb_Pessoa_End endereco on (endereco.id_pessoa = p.id)

    union

    select p.id,
           p.nome,   
           'PF' as tipo,
           CPF as cnpj_cpf,
           RG,
           endereco.rua
    from Tb_Pessoa p inner join Tb_Pessoa_Fisica pj on (p.id = pj.id_pessoa)         
                     inner join Tb_Pessoa_End endereco on (endereco.id_pessoa = p.id)    

    Ajude a melhorar o nosso Forum!
    Não esqueça de marca a mensagem como "útil", caso tenha ajudado.

    quinta-feira, 31 de janeiro de 2008 19:31
  • Robinson,

     

    Uma pessoa não pode ser pessoa física e jurídica ao mesmo tempo correto?!?

     

     

    quinta-feira, 31 de janeiro de 2008 19:47
  • Dá uma olhada no exemplo

     

     

    Select A.Id,A.Nome,A.Tipo,B.CNPJ,B.InscricaoEstadual,C.RG,C.CPF,D.Tipo,D.Rua
    From
    Tb_Pessoa A
    Left Outer Join TB_Pessoa_Juridica B On B.Id_Pessoa = A.Id
    Left Outer Join TB_Pessoa_Fisica C On C.Id_Pessoa = A.Id
    Inner Join TB_Pessoa_End D On D.IdPessoa = A.Id

     

     

     

     

    Espero ter ajudado

    quinta-feira, 31 de janeiro de 2008 19:56
  • tenta algo do tipo

     

    select

    P.Id,

    P.Nome,

    P.Tipo,

    isnull(PJ.CPNJ,'')[CPNJ],

    isnull(PJ.InscricaoEstadual,'')[InscricaoEstadual],

    isnull(PF.RG,'')[RG],

    isnull(PF.CPF,'')[CPF],

    isnull(E.Tipo,'')[Tipo],

    isnull(E.Rua,'')[Rua]

    from Tb_Pessoa P

    left join Tb_Pessoa_Juridica PJ on P.Id = PJ.id_Pessoa

    and P.Tipo = 'J'

    left join Tb_Pessoa_Física PF on P.Id = PF.id_Pessoa

    left join Tb_Pessoa_End E on P.Id = E.id_Pessoa

     

    acredito que deva dar certo

     

     

    []s

     

     

     

    quinta-feira, 31 de janeiro de 2008 23:11
  • Laercio,

     

     

    Valeu pela ajuda!!!! Funcionou beleza...

     

    Robinson Cruz

    sexta-feira, 1 de fevereiro de 2008 11:59
  • Até a próxima! Depois não deixe de marcar a minha dica como útil!

     

    Ajude a melhorar o nosso Forum!
    Não esqueça de marca a mensagem como "útil", caso tenha ajudado.

     

    sexta-feira, 1 de fevereiro de 2008 12:04