Я пытаюсь динамически поворачивать пары ключ-значение в таблице ниже.
+-----------------+-----------------------------+-------+
| id | category | name | value |
+-----------------+-----------------------------+-------+
| 1 | acme | 2fa | 0 |
| 2 | acme | abc_processing_date | today |
| 3 | acme | activate_new_approve_person | 1 |
| 4 | acme | activate_new_schdule | 1 |
| 5 | acme | additional_footer_for_person| NULL |
+-----------------+-----------------------------+-------+
При выполнении запроса ниже я получаю сообщение об ошибке
'-new-schedule,IFNULL(IF(z_tmp_admin_system_settings.name = 'additional_footer_fo' at line 1
Это разработано с использованием метода, описанного Тарином в Запрос сводной таблицы MySQL с динамическими столбцами .
SET SESSION group_concat_max_len = 100000;
SET @sql = '';
SELECT GROUP_CONCAT(DISTINCT
CONCAT(
'IFNULL(IF(z_tmp_admin_system_settings.name = ''',
name,
''', value, NULL), NULL) AS ',
name
)
)
INTO @sql
FROM z_tmp_admin_system_settings;
SET @sql = CONCAT('SELECT subdomain, ', @sql, ' FROM name GROUP BY subdomain');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;