Eu tenho uma cadeia de tabelas pai-filho, por exemplo.
Table A
id
name
Table B
id
name
parent_a
Table C
id
name
parent_b
Desejo que uma consulta obtenha todas as tabelas em uma única tabela com as seguintes colunas, semelhante ao modelo de lista de adjacência
id
parent_id
name
type
tentei fazer a seguinte consulta
SELECT
a.id as id,
null AS parent_id,
a.name as name,
1 AS type
FROM a
UNION ALL
SELECT
b.id as id,
b.parent_a AS parent_id,
b.name,
2 AS type
FROM b
UNION ALL
SELECT
c.id as id,
c.parent_b as parent_id,
c.name,
3 AS type
FROM c;
Isso não dá o resultado desejado, pois o id, em cada uma das tabelas individuais, está sendo duplicado, vejo que uma maneira de resolver o problema é incluir uma coluna Guid exclusiva em cada uma das tabelas individuais.
- O Guid é a única maneira de obter a saída desejada?
- Em caso afirmativo, existe uma maneira de gerar um Guid exclusivamente em um conjunto de tabelas no postgres?
- Existe alguma outra maneira de fazer isso sem o Guid?
Algo como o seguinte funcionaria para você?