У меня есть модель с несколькими типами и пытается отобразить вывод, где столбец одной таблицы становится строкой на выходе.Преобразование столбцов в строки: MySQL
У меня есть 3 таблицы - 1 Таблица данных, 1 таблица метаданных и таблица расширений.
Вот мой запрос:
set @sql=NULL;
SELECT group_concat(CONCAT(
'MAX(If(EXTLABEL = ''', EXTLABEL, ''', VALUE, NULL)) AS ',EXTLABEL))
into @sql
FROM TENANT_METADATA, TENANT_EXTENSIONTABLE
WHERE TENANT_METADATA.EXTENSION_ID = TENANT_EXTENSIONTABLE.EXTENSION_ID;
SET @sql=CONCAT('SELECT TENANT_NAME AS TENANT_TABLE, ', @sql, '
FROM TENANT_DATATABLE, TENANT_METADATA, TENANT_EXTENSIONTABLE
WHERE TENANT_DATATABLE.RECORD_ID=TENANT_EXTENSIONTABLE.RECORD_ID
AND TENANT_METADATA.EXTENSION_ID = TENANT_EXTENSIONTABLE.EXTENSION_ID
group by TENANT_DATATABLE.TENANT_NAME');
PREPARE stmt FROM @sql;
Execute stmt;
DEALLOCATE prepare stmt;
В моем выходе, мне нужно имена столбцов, как «Tenant_Table, ExtLABEL1, ExtLABEL2, ExtLABEL3 и т.д. и поле VALUE должно отображать значения для EXTLABEL столбцов
.Мой запрос, кажется, извлекает правильное значение из другой таблицы, но когда я выполняю команду Prepare stmt, он говорит, что у меня есть синтаксическая ошибка, но я не могу идентифицировать ошибку. Любая помощь будет действительно оценена. Спасибо.
Пожалуйста, покажите нам свою синтаксическую ошибку. –
Это то, что я получаю: 12: 42: 53 \t PREPARE stmt FROM @sql \t Код ошибки: 1064. У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего MySQL-сервера, для правильного синтаксиса для использования рядом с)) AS ID, MAX (If (EXTLABEL = 'DESCRIPTION', VALUE = 'Design Data Models')) AS DESC 'в строке 1 \t 0.000 sec – Katie
Это сообщение об ошибке соответствует коду, отправленному в вашем вопросе? –