Выберите динамические столбцы в MySQL
Можно ли пройти таблицу так:
mysql> select * from `stackoverflow`.`Results`; +--------------+---------+-------------+--------+ | ID | TYPE | CRITERIA_ID | RESULT | +--------------+---------+-------------+--------+ | 1 | car | env | 1 | | 2 | car | gas | | | 3 | car | age | | | 4 | bike | env | 1 | | 5 | bike | gas | | | 6 | bike | age | 1 | | 7 | bus | env | 1 | | 8 | bus | gas | 1 | | 9 | bus | age | 1 | +--------------+---------+-------------+--------+ 9 rows in set (0.00 sec)
В это:
+------+-----+-----+-----+ | TYPE | env | gas | age | +------+-----+-----+-----+ | car | 1 | | | | bike | 1 | | 1 | | bus | 1 | 1 | 1 | +------+-----+-----+-----+
Цель состоит в том, чтобы выбрать всеCRITERIA_ID
и использовать их в качестве столбца.
В качестве строк мне нравится использовать всеTYPE
с.
SELECT distinct(CRITERIA_ID) FROM stackoverflow.Results;
All Types SELECT distinct(TYPE) FROM stackoverflow.Results;
Но как объединить их в вид или что-то. как это?
Если вам нравится играть с данными. Это скрипт для генерации таблицы:
CREATE SCHEMA `stackoverflow`;
CREATE TABLE `stackoverflow`.`Results` (
`ID` bigint(20) NOT NULL AUTO_INCREMENT,
`TYPE` varchar(50) NOT NULL,
`CRITERIA_ID` varchar(5) NOT NULL,
`RESULT` bit(1) NOT NULL,
PRIMARY KEY (`ID`)
)
ENGINE=InnoDB;
INSERT INTO `stackoverflow`.`Results`
(
`ID`,
`TYPE`,
`CRITERIA_ID`,
`RESULT`
)
VALUES
( 1, "car", env, true ),
( 2, "car", gas, false ),
( 3, "car", age, false ),
( 4, "bike", env, true ),
( 5, "bike", gas, false ),
( 6, "bike", age, true ),
( 7, "bus", env, true ),
( 8, "bus", gas, true ),
( 9, "bus", age, true );