我有 3 张桌子:
- 第一个包含有关人员的信息。相关列是
personID
. - 第二个包含一个人可以做的练习。例如,有 3 个带有
exID
. - 第三个包含一个人 (
personID
) 在练习 ( ) 中达到的分数exID
。所以这里的每一行代表一个人参加的考试。但并不是每个人都需要参加每场考试。
我想要的是列personID
, exam_one
, exam_two
, exam_three
, ... 的结果(正在进行中,取决于有多少考试)。结果的每一行都应包含personID
相应考试的分数。
对于未参加的考试,应该有 NULL 或其他内容。
餐桌人的例子:
personID | Name | ...
-------------------
1 | Max |
2 | Peter |
练习表示例:
exID | exName | maxPoints | ...
-------------------------------
1 | exam1 | 20
2 | exam2 | 25
3 | exam3 | 20
积分表示例:
personID (fkey) | exID (fkey) | points
----------------------------------------
1 | 1 | 12.5
1 | 3 | 10
2 | 1 | 5
2 | 2 | 8.5
2 | 3 | 10
希望的结果:
personId | exam1 | exam2 | exam3
------------------------------------
1 | 12.5 | NULL | 10
2 | 5 | 8.5 | 10
有没有办法做到这一点?我使用PostgreSQL