繁体   English   中英

根据ID从另一个表返回字段名

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM