私は3つのテーブルを持っています:
- 最初のものには、人に関する情報が含まれています。関連する列は
personID
です。 - 2つ目は、人が実行できる演習が含まれています。たとえば、。を使用した3つの演習があり
exID
ます。 personID
3つ目は、エクササイズ( )で人()が到達したポイントを含みます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を使用しています