-1

我有一个表 data_table,我在其上将一个主键定义为 d_id,将其他字段定义为 f1 到 f25。我有另一个表作为 fields_name 字段名称存储为值 f_id, field_name, order

我想从数据表中获取所有数据,使用列名作为存储在 fields_name 表中的 field_values 我得到了什么,

f1   f2   f3   f4 
a    b    c    d

我想要的是,

field_name1    field_name1    field_name1    field_name1
a              b              c              d

帮助appriciated......

4

2 回答 2

0

我不明白......如果你想重命名你可以使用的列名AS

SELECT f1 AS "field_name1", f2 AS "field_name2", f3 AS "field_name3" FROM table

编辑:

尝试这样的事情:

SELECT f1,f2,f3,f4... FROM data_table LEFT JOIN data_table ON data_table.f1=(SELECT field_name FROM fields_names WHERE a_flag='f1') AND data_table.f2=(SELECT field_name FROM fields_names WHERE a_flag='f2')

于 2012-09-25T14:52:07.267 回答
0

听起来你可能想做这样的事情:

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

请参阅带有演示的 SQL Fiddle

于 2012-09-25T14:16:34.363 回答