首页 > 解决方案 > 具有未知行结果的数据透视

问题描述

为了简化我的问题,假设我有两个表:userscars,它们具有多对多关系(一个用户可以有很多汽车,而一辆车可以有很多用户):

tbl_users          tbl_user_car                      tbl_cars
-------------      ----------------------------      ------
id_usr | name      id_usr_car | fk_usr | fk_car      id_car | name 
1      | usr1      1          | 1      | 1           1      | car1
2      | usr2      2          | 1      | 2           2      | car2
3      | usr3      3          | 2      | 1           3      | car3

我有一个网络 CRUD,管理员可以将汽车与用户相关联,所以我不知道有多少汽车有一个用户。所以我想做一个查询来显示用户及其所有相关的汽车,但就像一个枢轴一样,像这样:

SELECT * FROM pivot
------
name_usr | id_car | name_car  | id_car2 | name_car2 | ... n number of cars
usr1     | 1      | car1      | 2       | car2      | ...
usr2     | 1      | car1      |         |           | ...
usr3     |        |           |         |           | ...

我尝试使用crosstab()函数,但我需要知道我想要返回多少列,并且我需要进行 5 次内连接才能查看更多数据。任何帮助将不胜感激。

标签: sqlpostgresqlpivot

解决方案


推荐阅读