だから、私はこれに似たMySQLテーブルを持っています:
|Day | Participant| Score |
+----+------------+-------+
|Mon | Andy | 9 |
|Mon | Betty | 8 |
|Mon | Charlie | 7 |
|Tue | Andy | 6 |
|Tue | Betty | 6 |
|Tue | Charlie | 8 |
|Wed | Andy | 7 |
|Wed | Charlie | 4 |
私はそれをこれに出力したい:
| Day | Andy | Betty | Charlie |
+-----+------+-------+---------+
| Mon | 9 | 8 | 7 |
| Tue | 6 | 6 | 7 |
| Wed | 7 | null | 4 |
私はPHPでこの問題に取り組み、これが私が思いついたものです。
- 各参加者の名前を照会します。
PHPを使用して、次のように、毎日の各参加者のスコアのサブクエリを作成します。
SELECT score FROM TableName WHERE (Day=ref_point AND Participant='Andy')
次のように、すべてのサブクエリを含めてメインクエリを生成します。
SELECT Day AS ref_point,(/* Sub-query for Andy */) AS Andy,(/* Sub-query for Betty */) AS Betty,(/*Sub-queries for the rest of participants */) AS Others FROM TableName GROUP BY Day
これは非常にうまく機能しますが、参加者の数が増えると、クエリ文字列も増えます。ある日、クエリがPHPの最大文字列長より長くなるのではないかと心配しています。これを完全にMySQLで行う方法を知る必要があります。