我一直在尝试寻找解决方案一段时间,但我一定不知道正确的术语。以下是我正在努力完成的简化版本。
鉴于这三个表:
表:事物
| id | name |
-------------
| 1 | Foo |
| 2 | Bar |
| 3 | Baz |
表:问题
| id | title |
---------------
| 1 | Crazy |
| 2 | Stupid |
| 3 | Ugly |
表:thing_issue
| id | thing_id | issue_id |
----------------------------
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 1 | 3 |
| 4 | 2 | 2 |
| 5 | 3 | 1 |
| 6 | 3 | 3 |
我希望有一个产生以下内容的视图:
| Thing ID | Thing Name | Crazy | Stupid | Ugly |
-------------------------------------------------
| 1 | Foo | Yes | Yes | Yes |
| 2 | Bar | No | Yes | No |
| 3 | Baz | Yes | No | Yes |
棘手的部分是我希望最终的列基于issue
表的内容是动态的。意思是,如果issue
表因此插入了一行:
表:问题
| id | title |
---------------
| 1 | Crazy |
| 2 | Stupid |
| 3 | Ugly |
| 4 | Mad |
然后视图的输出如下(不对视图进行任何修改):
| Thing ID | Thing Name | Crazy | Stupid | Ugly | Mad |
-------------------------------------------------------
| 1 | Foo | Yes | Yes | Yes | No |
| 2 | Bar | No | Yes | No | No |
| 3 | Baz | Yes | No | Yes | No |
我正在使用PostgreSQL 9.2。任何帮助都会有很大的帮助!