2012-05-16 34 views
1

我相当肯定这是一个相当简单的答案,但答案是完全滑落我的脑海里。简单的MySQL查询 - 更改表格格式周围

我有一个正在格式化像一个数据库表:

event_id | elem_id | value 
    1   1  Value 1 
    1   2  Value 2 
    2   1  Value 3 
    2   2  Value 4 

两个事项标识和elem_id是未定数,并有无限的可能性。

如何将查询它例如基于event_id的1得到的数据被格式化为如:

event_id | 1 |  2 
    1  Value 1 Value 2 

明知elem_id是一个数字> = N,从而潜在地有可能是50 elem_id但我仍然需要这种格式的数据。

就像我说过的,我不能为了我的生活找出查询来组装它的方式。任何帮助将不胜感激。

+0

不像一些其他的RDBMS,MySQL没有用于转动这种操作(按设计的原生支持,为开发者觉得这样的事情属于以上在表示层适当)。尝试在你的应用程序中执行这些操作。 – eggyal

+0

呃..太糟糕了。 – Peter

回答

1

尝试以下操作:

SELECT 
    `event_id`, 
    (SELECT t2.`value` FROM table t2 WHERE t2.`event_id` = t1.`event_id` AND t2.`elem_id` = 1), 
    (SELECT t3.`value` FROM table t3 WHERE t3.`event_id` = t1.`event_id` AND t3.`elem_id` = 2) 
FROM `table` t1 GROUP BY `event_id`; 

您也可以使用不同的方式,并获得逗号分隔的格式elem_ids和值在两个单元

SELECT `event_id`, GROUP_CONCAT(`elem_id`), GROUP_CONCAT(`value`) FROM `table` GROUP BY `event_id`; 

,你可以用下面的语法改变分隔符: GROUP_CONCAT(field SEPARATOR '::')

+0

也可以用JOIN替换子查询 – Electronick