[英]Return fieldname from another table based on ID
首先,我要知道这是一个不好的表设计。 我无法控制设计。 这是一个旧系统,我必须为其编写一些报告。 在工作台中来回查看两个表并不理想,因此我正在寻找查看第二个表的更好方法。
我有两张桌子。
第一桌
select CustomFieldId, FieldName from qcdt_jobs_CustomFields where projectId=181;
tru
CustomFieldID FieldName
------------- ---------
4202 Invoice Date
4203 Invoice Number
Etc.
第二张桌子
SELECT * FROM qcdt_jobs_customfields_181 where JobID=1;
退货
JobID CF4202 CF4203 Etc.
------ -------- ------- -------
1 11/18/2014 45140 Value
因此,第二个表中的字段名称与第一个表中定义的CustomField Number(CF ####)一起定义。
我的问题是,有没有一个查询将返回第二个表(从第一个表)的字段名,而不是CF ####字段名? 所以看起来像这样。
JobID Invoice Date Invoice Number Etc.
------ -------------- -------------- -------
1 11/18/2014 45140 Value
您必须生成动态SQL并使用PREPARE
来执行它。
SELECT GROUP_CONCAT(CONCAT('CF', CustomFieldID, ' AS `', CustomFieldName, '`')) INTO fieldNames
FROM qcdt_jobs_CustomFields
WHERE projectId = 181;
PREPARE stmt FROM CONCAT('SELECT JobID, ', fieldNames, ' Etc. FROM qcdt_jobs_customfields_181 where JobID=1');
EXECUTE stmt;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.