以下の解決策は、問題を解決するのに役立つ可能性があります。テーブル構造に従っていくつかの変更を行う必要があります。
このソリューションでは、ストアドプロシージャを作成する必要があります。
これがテーブル構造の場合:
CREATE TABLE `school` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(500) DEFAULT NULL,
`value` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
SET FOREIGN_KEY_CHECKS=1;
上記がテーブル構造である場合、以下のソリューションが機能しています。
SET SESSION group_concat_max_len = (2056 * 2056);
SET @sql = NULL;
SELECT GROUP_CONCAT(DISTINCT
CONCAT(
'MAX(CASE WHEN school.name ="',m.name,'"'
' THEN school.value END)"',m.name , '"'))
INTO @sql
from school as m;
SET @sql = CONCAT('SELECT value,',@sql,
' FROM school');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
テーブル構造に従って変更を行います。
このソリューションは、複数のテーブルにも役立ちます。これが問題の解決に役立つことを願っています。