2014-09-25 76 views
2

我有一个表中有两列的数据库,名为jos_facileforms_subrecords。我想报告:记录,值使用另一列中的一组值创建列

记录包含一组唯一的记录值,值包含我想要转化为列的值。即:

RECORD | NAME  | VALUE 
1  | firstname | Frank 
1  | lastname | Smith 
1  | email  | [email protected] 
2  | firstname | Sally 
2  | lastname | Jones 
2  | email  | [email protected] 
3  | firstname | Peter 
3  | lastname | Baker 
3  | email  | [email protected] 

我想把它变成每个记录集的行。即

FIRST NAME | LAST NAME  | EMAIL 
Frank   | Smith   | [email protected] 
Sally   | Jones   | [email protected] 
Peter   | Baker   | [email protected] 
+1

你需要一些区别电子邮件地址和名字的东西。你有任何专栏能做到吗? – paqogomez 2014-09-25 05:58:19

+0

是的。我应该补充说。有一个名为“名称”的列,每行都有一个“名称”。: 1 |名字| frank 1 |姓氏|史密斯 1 |电子邮件| [email protected] – 2014-09-25 06:09:33

+0

可能重复的[MySQL - 从列中创建一条记录](http://stackoverflow.com/questions/13726256/mysql-make-one-record-out-of-a-column) – 2014-09-25 07:15:34

回答

0

你在找什么是一个PIVOT查询。其他DBMS的功能是这样的,不幸的是MySQL不支持,所以你必须手动完成。有几种方法可以实现这一点。这里有一个适用于你的情况的产品:

select 
    f.`record` as `record`, 
    f.`value` as `first name`, 
    l.`value` as `last name`, 
    e.`value` as `email` 
from 
    jos_facileforms_subrecords f 
    inner join jos_facileforms_subrecords l on f.record = l.record 
    inner join jos_facileforms_subrecords e on f.record = e.record 
where 
    f.name = 'firstname' 
    and l.name = 'lastname' 
    and e.name = 'email' 
group by f.`record` 

看到它在这工作fiddle

+0

天才。谢谢paqogmoez! – 2014-09-25 09:00:31