我有一个多租户模型并尝试显示输出,其中一个表的列在输出中成为一行。
我有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时,它说我有语法错误,但我无法识别错误。任何帮助将非常感激。感谢。
答案 0 :(得分:0)
列到行:UNION ALL
( SELECT Tenant_Table, 1, ExtLABEL1 AS EXTLABEL FROM ... )
UNION ALL
( SELECT Tenant_Table, 2, ExtLABEL2 AS EXTLABEL FROM ... )
UNION ALL
( SELECT Tenant_Table, 3, ExtLABEL3 AS EXTLABEL FROM ... )
ORDER BY 1,2;