【发布时间】:2014-09-30 22:22:06
【问题描述】:
我有一个数据库结构(为了理解问题而最大限度地简化):
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")
对于给定的“entry.id”,我想获取该条目的详细信息,即。在单个 SQL 查询中链接到该条目的所有“entry_fields”。
举个例子可能会更好:
“字段”:
"result"
"output"
"code"
"command"
“条目”包含:
id : 842
id : 850
“entry_fields”包含:
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"
想要的输出是:
| id | command | output | code | result |
| 842 | NULL | "this is an output" | 42 | ok |
| 850 | "print ko" | NULL | NULL | ko |
目的是能够在不改变任何“条目”表结构的情况下添加“字段”
我试过类似的东西:
SELECT e.*, (SELECT name FROM fields) FROM entry AS e
但 Postgres 抱怨:
错误:用作表达式的子查询返回多行
希望有人可以帮助我!
【问题讨论】:
-
能否请您提供此表的脚本
-
听起来你需要了解 JOINing 表......
-
@Hellion:或者更确切地说:数据库设计和/或交叉制表。
标签: sql database postgresql database-design entity-attribute-value