2013/7/26 Glauco Torres <[email protected]>

>
> Tenho o seguinte select que me traz todas as tabelas que possui o campo
>> cod_id:
>>
>> select table_name from information_schema.columns
>> where table_schema not in(' pg_catalog ', ' information_schema ')
>>   and(column_name = 'cod_id')
>>
>> Isso pode te dar uma luz de como fazer seu select
>>
>>
> Pois é essa consulta eu já tinha conseguido fazer ela, o problema é o
> depois, mais mesmo assim obrigado.
>
>
O PostgreSQL não vai te dar o resultado que você espera de uma só vez, você
vai ter que usar a consulta acima para gerar o comando SQL para buscar os
dados nas tabelas.

Por exemplo (não testado):

SELECT 'SELECT ' || quote_ident(column_name) || '::text FROM '
       || quote_ident(table_schema) ||'.'||quote_ident(table_name) || '
UNION ALL '
FROM information_schema.columns
WHERE table_schema NOT IN(' pg_catalog ', ' information_schema ')
  AND (column_name = 'id')
UNION ALL
SELECT 'SELECT * FROM (SELECT null::text LIMIT 0) AS last;' -- Gambiarra
para ultima linha
;

Com isso, basta executar essa consulta, gravar o resultado dela numa
variável, e executar a consulta dessa variável. Isso pode ser feito
facilmente via PL/pgSQL com o comando EXECUTE. Veja que converti tudo para
"text", se você garantir que é tudo do mesmo tipo, nem vai precisar disso.

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a