La,
Tai atliekama lenteles "pasukimo" metodu ;)
Lentelė:
CREATE TABLE `t` (
`id` int(10) unsigned NOT NULL,
`var` varchar(255) NOT NULL,
`val` varchar(255) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
Duomenys:
+----+-----+-----+
| id | var | val |
+----+-----+-----+
| 1 | a | 1 |
| 1 | b | 2 |
| 1 | c | 3 |
| 2 | a | 11 |
| 2 | b | 22 |
| 2 | c | 33 |
+----+-----+-----+
Užklausa:
SELECT id,
MAX(IF(var = "a", val, NULL)) AS a,
MAX(IF(var = "b", val, NULL)) AS b,
MAX(IF(var = "c", val, NULL)) AS c
FROM `t`
GROUP BY id
Rezultatas:
+----+------+------+------+
| id | a | b | c |
+----+------+------+------+
| 1 | 1 | 2 | 3 |
| 2 | 11 | 22 | 33 |
+----+------+------+------+