SQL: Crie um registro completo a partir de 2 tabelas
Eu tenho uma estrutura de banco de dados como está (simplificada ao máximo para entender a preocupação):
Table "entry" ("id" integer primary key)
Table "fields" ("name" varchar primary key, and others)
Table "entry_fields" ("entryid" integer primary key, "name" varchar primary key, "value")
Eu gostaria de obter, para um dado "entry.id", os detalhes dessa entrada, ie. todos os "campos_de_ entrada" vinculados a esta entrada, em uma única consulta SQL.
Um exemplo seria melhor, talvez:
"Campos":
"result"
"output"
"code"
"command"
"entrada" contém:
id : 842
id : 850
"entry_fields" contém:
entryid : 842, name : "result", value : "ok"
entryid : 842, name : "output", value : "this is an output"
entryid : 842, name : "code", value : "42"
entryid : 850, name : "result", value : "ko"
entryid : 850, name : "command", value : "print ko"
A saída desejada seria:
| id | command | output | code | result |
| 842 | NULL | "this is an output" | 42 | ok |
| 850 | "print ko" | NULL | NULL | ko |
O objetivo é poder adicionar um "campo" sem alterar nada na estrutura da tabela "entrada"
Eu tentei algo como:
SELECT e.*, (SELECT name FROM fields) FROM entry AS e
mas o Postgres reclama:
ERRO: mais de uma linha retornada por uma subconsulta usada como expressão
Espero que alguém possa me ajudar!