Php 使用join更改mysql列名

Php 使用join更改mysql列名,php,mysql,join,Php,Mysql,Join,我有一个表data_table,在这个表上我定义了一个主键作为d_id,其他字段作为f1到f25。 我有另一个表作为fields\u name,其中字段名存储为value f_id、字段名称、订单 我想使用列名作为存储在fields\u name表中的field\u值从数据表中获取所有数据 我得到的 f1 f2 f3 f4 a b c d 我想要什么 field_name1 field_name1 field_name1 field_name1

我有一个表data_table,在这个表上我定义了一个主键作为d_id,其他字段作为f1到f25。 我有另一个表作为fields\u name,其中字段名存储为value f_id、字段名称、订单

我想使用列名作为存储在fields\u name表中的field\u值从数据表中获取所有数据 我得到的

f1   f2   f3   f4 
a    b    c    d
我想要什么

field_name1    field_name1    field_name1    field_name1
a              b              c              d

帮助已通知….

听起来您可能想执行以下操作:

select d_id, 
  max(case when field_name = 'Header' then value end) Header,
  max(case when field_name = 'ID No.' then value end) ID_No,
  max(case when field_name = 'Image' then value end) Image,
  max(case when field_name = 'Name' then value end) Name
from
(
  select d_id, f1 value, 'f1' col
  from data_table
  union all
  select d_id, f2 value, 'f2' col
  from data_table
  union all
  select d_id, f3 value, 'f3' col
  from data_table
  union all
  select d_id, f4 value, 'f4' col
  from data_table
) u
inner join fields_name f
  on u.col = f.a_flag
group by d_id

我不明白。。。如果要重命名列名,可以将其用作

从表中选择f1作为字段名称1,f2作为字段名称2,f3作为字段名称3

编辑:

试着这样做:

select d_id, 
  max(case when field_name = 'Header' then value end) Header,
  max(case when field_name = 'ID No.' then value end) ID_No,
  max(case when field_name = 'Image' then value end) Image,
  max(case when field_name = 'Name' then value end) Name
from
(
  select d_id, f1 value, 'f1' col
  from data_table
  union all
  select d_id, f2 value, 'f2' col
  from data_table
  union all
  select d_id, f3 value, 'f3' col
  from data_table
  union all
  select d_id, f4 value, 'f4' col
  from data_table
) u
inner join fields_name f
  on u.col = f.a_flag
group by d_id
选择f1、f2、f3、f4。。。 从数据表
左键连接数据表上的数据表。f1=从带有a_flag='f1'的字段名和数据表中选择字段名。f2=从带有a_flag='f2'的字段名中选择字段名。

你能不能至少尝试提出一个可能的查询,这样人们就可以提出一个修复方案?+1如果你能在“我想重命名列”中给我们一些东西,这将非常有帮助使用join coz,我将列名作为值存储在另一个表中,我想要一个用户可以在表中添加列的表,我在data_表中创建了n列,当它在字段名称表中有一个联接时可以访问。我需要查看您的表结构以及您已有的任何查询Image:Data table structure>>>>>>Image:Data\u table Values>>>>>Image:Fields\u name structure and Values>>>>>我不知道在这种情况下,我尝试了很多次,但都没有成功,[从字段\u name查询中选择一个\u标志以获取列名,但因为它返回多个未从数据\u表中工作的行],这只是我的想法,不起作用。我不知道如何将表值连接到列标题,比如在表数据中的给定细节中\u表列名类似于f1、f2、f3…,在表字段中\u name作为列字段\u name的值,而不是\u标志对应的列@h3rrmiller@ManeeshKumar在您对另一个答案发表评论后,请ee my edit。听起来像是这样,这就是你要找的。错误为1267-非法混合排序规则utf8_general_ci,强制和拉丁1_swedish_ci,为操作“=”隐式-以上两个子查询都在工作,但我想错误是在上次使用的联接中,尝试过但没有得到解决。@Bluefeethanks@BluefeetError在排序规则中我修复了e所有的错误都完成了,谢谢你回复MaxCase当字段名称='Header'然后值结束Header将解释它,我不明白下面发生了什么brackets@ManeeshKumar我所做的是交换位置,CASE函数表示,如果field_name等于Header,则使用列值。