显示数据库中列出值而非组织列的MySQL结果



在WordPress上,我们使用Gravity Forms来收集用户数据。我有时间高效或正确地显示结果,这样我就可以操作它并创建一个客户端列表页面。

我习惯于看到这样的数据库:

id | firstname | lastname | etc.| form_id

1|John|Doe|x|12

但是Gravity表单存储的数据是这样的:

id|field_number|form_id|value

1|8|3|John

2|14|3|Doe

当然,有几个字段编号与名字、姓氏、地址、电话等相对应,但我没有列出它们。

所以我想做的就是运行一个SELECT语句,并显示良好且有组织的结果,比如:

John Doe(需要在循环中相邻排列2个字段)

地址(当然,我可以在循环中放入
来中断)等

我很抱歉,但我没有用这种方式提取数据,我甚至不知道它叫什么。

我下面的代码是一个很弱的显示尝试,但我知道它必须是完全低效和不正确的。提取数据的正确方法是什么?这种类型的存储被称为什么(Gravity Forms的方法)?

global $wpdb;
$rows = $wpdb->get_results( "SELECT form_id, value, field_number FROM     
wp_rg_lead_detail WHERE form_id=3" );
foreach( $rows as $row ) {
if($row->field_number==1) {
echo $row->value; 
}
if($row->field_number==8) {
echo $row->value; 
}
}

不幸的是,我没有一个干净的解决方案,我不知道这种形式的存储被称为什么,除了真正的邪恶。也就是说,我想,考虑到已经有几个小时没有回应了,你可能会欣赏一些新想法作为可能的实验途径。我在这里包括了两条思路,它们应该与MOD一起工作,用于您的其余数据,尽管仍然很恶心。祝你好运

select distinct
f.form_id, 
concat(first.val, ' ', last.val) as name
from
form f
inner join 
(select f1.form_id, f1.val from form f1 where f1.field_number = 8) as first
on f.form_id = first.form_id
inner join 
(select f2.form_id, f2.val from form f2 where f2.field_number = 14) as last
on f.form_id = last.form_id
where f.form_id = 3;

select distinct
f.form_id, 
n.name
from
form f
inner join 
(select 
form_id, 
group_concat(distinct val order by field_number asc separator ' ') as name
from 
form 
where 
field_number = 8 
or field_number = 14 
group by form_id) n 
on f.form_id = n.form_id
where f.form_id = 3;

相关内容

  • 没有找到相关文章

最新更新