SELECT id, nome, email, tel
     , string_to_array(concat_ws(','
             ,CASE WHEN cliente.pessoa IS NOT NULL THEN 'C' END
             ,CASE WHEN dependente.pessoa IS NOT NULL THEN 'D' END
             ,CASE WHEN funcionario.pessoa IS NOT NULL THEN 'F' END
                      ),',') as TIPO
 FROM pessoa
   FULL JOIN cliente
     ON pessoa.id = cliente.pessoa
   FULL JOIN dependente
     ON pessoa.id = dependente.pessoa
   FULL JOIN funcionario
     ON pessoa.id = funcionario.pessoa;

Denis Albuquerque

Em 12 de novembro de 2016 09:58, Matheus Saraiva <[email protected]>
escreveu:

> Dada as seguintes tabelas:
>
> _________PESSOA_________
>
> id serial PK
>
> nome varchar(50) NOT NULL
>
> email varchar(100) NOT NULL
>
> tel varchar(14) NOT NULL
>
> --------------------------------
>
> _________CLIENTE__________
>
> pessoa integer FK/PK --(FK to id in tbl PESSOA)
>
> rg varchar(20) NOT NULL
>
> cpf varchar(14) NOT NULL
>
> ----------------------------------------
>
> _________DEPENDENTE________
>
> pessoa integer FK/PK --(FK to id in tbl PESSOA)
>
> fiador integer FK NOT NULL--(FK to pessoa in tbl CLIENTE)
>
> autorizado boolean NOT NULL
>
> --------------------------------------------
>
> _________FUNCIONARIO________
>
> pessoa integer FK/PK --(FK to id in tbl PESSOA)
>
> root boolean NOT NULL
>
> --------------------------------------------
>
> Uma pessoa pode ser tanto um funcionário como um cliente ou um dependente
> ou os três.
>
> Quero fazer um select que me informe em quais das três tabelas o ID de
> PESSOA é usado como chave estrangeira, ou seja, saber um se uma pessoa é um
> cliente, um cliente/funcionário, um cliente/dependente/funcionario, etc.
>
> A forma de retorno ideal pode ser um array de chars com a leta inicial de
> cada tabela (ex. {C, D, F}), ou uma string composta pela letra inicial de
> cada uma 'CDF'.
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a