Em 23/02/11, Fabiano Fernandes<[email protected]> escreveu:
> Pessoal preciso de uma ajudinha ...
>
> tenho as seguintes tabela ....
>
> basperson
> + personid
> + name
> + shortname
>
>
> physicalperson
> + personid
> + location
> + number
> + fatherid (personid)
> + motherid (personid)
>
> Preciso de um select que me retorna desta forma
>
>
> Nome da Pessoa || Endereço || Nome do Pai || Nome da Mãe
>
> O problema está em retornar o nome do pai e da mãe, pois já fiz um LEFT JOIN
> com personid das duas tabelas ...
>
> Fiz assim mão ele me retorna o um erro:
>
> SELECT basperson.name, physicalperson.location,  (SELECT
> basperson.nameFROM basperson WHERE basperson.personid
> = physicalperson.fatherid ), (SELECT basperson.name FROM basperson
> WHERE basperson.personid = physicalperson.motherid)
> FROM basperson
> INNER JOIN basphysicalperson ON basperson.personid =
> basphysicalperson.personid
> ORDER BY
> basperson.name
>
>
> Alguem pode dar uma sugestão ...
>


Você pode fazer tudo utilizando junções:

SELECT bp.name AS "Nome da Pessoa", pp.location AS "Endereço",
bp1.name AS "Nome do Pai", bp2.name AS "Nome da mãe"
FROM (basperson bp INNER JOIN basphysicalperson pp ON bp.personid = pp.personid)
LEFT OUTER JOIN basperson bp1 ON pp.fatherid = bp1.personid
LEFT OUTER JOIN basperson bp2 ON pp.motherid = bp2.personid
ORDER BY bp.name;

Osvaldo
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a