OK MySQL Wizards:
У меня есть таблица данных о положении от нескольких зондов, определенная следующим образом:
+----------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+----------+------+-----+---------+-------+
| time | datetime | NO | | NULL | |
| probe_id | char(3) | NO | | NULL | |
| position | float | NO | | NULL | |
+----------+----------+------+-----+---------+-------+
Простой выбор выводит что-то вроде этого:
+---------------------+----------+----------+
| time | probe_id | position |
+---------------------+----------+----------+
| 2010-05-05 14:16:42 | 00A | 0.0045 |
| 2010-05-05 14:16:42 | 00B | 0.0005 |
| 2010-05-05 14:16:42 | 00C | 0.002 |
| 2010-05-05 14:16:42 | 01A | 0 |
| 2010-05-05 14:16:42 | 01B | 0.001 |
| 2010-05-05 14:16:42 | 01C | 0.0025 |
| 2010-05-05 14:16:43 | 00A | 0.0045 |
| 2010-05-05 14:16:43 | 00B | 0.0005 |
| 2010-05-05 14:16:43 | 00C | 0.002 |
| 2010-05-05 14:16:43 | 01A | 0 |
| . | . | . |
| . | . | . |
| . | . | . |
+---------------------+----------+----------+
Однако я хотел бы вывести что-то вроде этого:
+---------------------+--------+--------+-------+-----+-------+--------+
| time | 00A | 00B | 00C | 01A | 01B | 01C |
+---------------------+--------+--------+-------+-----+-------+--------+
| 2010-05-05 14:16:42 | 0.0045 | 0.0005 | 0.002 | 0 | 0.001 | 0.0025 |
| 2010-05-05 14:16:43 | 0.0045 | 0.0005 | 0.002 | 0 | 0.001 | 0.0025 |
| 2010-05-05 14:16:44 | 0.0045 | 0.0005 | 0.002 | 0 | 0.001 | 0.0025 |
| 2010-05-05 14:16:45 | 0.0045 | 0.0005 | 0.002 | 0 | 0.001 | 0.0025 |
| 2010-05-05 14:16:46 | 0.0045 | 0.0005 | 0.002 | 0 | 0.001 | 0.0025 |
| 2010-05-05 14:16:47 | 0.0045 | 0.0005 | 0.002 | 0 | 0.001 | 0.0025 |
| . | . | . | . | . | . | . |
| . | . | . | . | . | . | . |
| . | . | . | . | . | . | . |
+---------------------+--------+--------+-------+-----+-------+--------+
В идеале, различные столбцы положения зонда генерируются динамически на основе данных в таблице. Это возможно, или я выдергиваю волосы впустую?
Я пытался использовать время GROUP BY с GROUP_CONCAT, который примерно выводит данные, но я не могу разделить этот вывод на столбцы probe_id.
mysql> SELECT time, GROUP_CONCAT(probe_id), GROUP_CONCAT(position) FROM MG41 GROUP BY time LIMIT 10;
+---------------------+-------------------------+------------------------------------+
| time | GROUP_CONCAT(probe_id) | GROUP_CONCAT(position) |
+---------------------+-------------------------+------------------------------------+
| 2010-05-05 14:16:42 | 00A,00B,00C,01A,01B,01C | 0.0045,0.0005,0.002,0,0.001,0.0025 |
| 2010-05-05 14:16:43 | 01C,01B,01A,00C,00B,00A | 0.0025,0.001,0,0.002,0.0005,0.0045 |
| 2010-05-05 14:16:44 | 01C,01B,01A,00C,00B,00A | 0.0025,0.001,0,0.002,0.0005,0.0045 |
| 2010-05-05 14:16:45 | 01C,01B,01A,00C,00B,00A | 0.0025,0.001,0,0.002,0.0005,0.0045 |
| 2010-05-05 14:16:46 | 01C,01B,01A,00C,00B,00A | 0.0025,0.001,0,0.002,0.0005,0.0045 |
| 2010-05-05 14:16:47 | 01C,01B,01A,00C,00B,00A | 0.0025,0.001,0,0.002,0.0005,0.0045 |
| 2010-05-05 14:16:48 | 01C,01B,01A,00C,00B,00A | 0.0025,0.001,0,0.002,0.0005,0.0045 |
| 2010-05-05 14:16:49 | 01C,01B,01A,00C,00B,00A | 0.0025,0.001,0,0.002,0.0005,0.0045 |
| 2010-05-05 14:16:50 | 01C,01B,01A,00C,00B,00A | 0.0025,0.001,0,0.002,0.0005,0.0045 |
| 2010-05-05 14:16:51 | 01C,01B,01A,00C,00B,00A | 0.0025,0.001,0,0.002,0.0005,0.0045 |
+---------------------+-------------------------+------------------------------------+