【发布时间】:2018-05-29 00:22:07
【问题描述】:
我正在尝试在 Postgres 中构建一个使用 3 个数据表的视图。我不确定这是否可能,并且在谷歌上搜索了一下,但没有找到任何结论性的东西。这就是我想要做的:
我有一个项目名称表 - 假设有 5 个项目:
fruits
id | name
1 | banana
2 | orange
3 | pear
4 | apple
5 | grape
然后我有一个人员列表
people
id | name
1 | Joe Blow
2 | Sally Smith
3 | John Jones
4 | Sam Benny
5 | Nick Stevens
6 | Peter Sandwitch
7 | Sarah Morgan
然后我有第三个表链接上述两个:
people_fruits
person_id | fruit_id
1 | 1
1 | 2
1 | 3
1 | 4
2 | 1
2 | 3
3 | 5
6 | 3
7 | 3
7 | 4
我想要做的是能够利用上述内容动态创建一个视图,该视图将根据水果表的内容更改列。例如,我希望视图将上述数据显示如下:
my_fruity_view
name | bananna | orange | pear | apple | grape
Joe Blow | X | X | X | X |
Sally Smith | X | | X | |
John Jones | | | | | X
Sam Benny | | | | |
Nick Stevens | | | | |
Peter Sandwitch | | | X | |
Sarah Morgan | | | X | X |
如果我稍后添加水果芒果,下次运行查询时(不做修改),它会将其添加为列:
my_fruity_view
name | bananna | orange | pear | apple | grape | mango
Joe Blow | X | X | X | X | |
Sally Smith | X | | X | | |
John Jones | | | | | X |
Sam Benny | | | | | |
Nick Stevens | | | | | |
Peter Sandwitch | | | X | | |
Sarah Morgan | | | X | X | |
这样的查询可能吗?我在堆栈溢出时看到了一些类似的事情 - 但它似乎是在每列的基础上完成的 - 但我的数据需要是动态的。
我可以通过编程实现这一点,但我更愿意将其打包成一个视图以保持整洁。对此的任何帮助将不胜感激。
【问题讨论】:
-
与其为格式化道歉,不如直接把东西格式化一下?
-
如何在此处格式化的友好说明:stackoverflow.com/editing-help 您的问题看起来并没有那么糟糕,但我们已经看到很多更糟了。
-
谢谢,注意!
标签: postgresql join many-to-many pivot crosstab