2011-12-19 28 views
2

我一直在搜索和阅读,并没有完全支持我需要的东西。将数据列转换为mySQl中的行

name,stuff1, stuff2, skill1, skill2, skill3 ... skill200

196个表中的行。技能值范围从0到4。

我知道,没有正常化。现在它需要保持这种方式。

我需要返回

 
     Name1,  name2,  name3,  ... 
skill1 skill1value, Skill1value, skill1value, ... 
skill2 skill2value, skill2value, skill2value, ... 

每个名称只有一个排,直到永远。

换句话说,每个技能(每个技能的价值)都有一个名字和一个行,并且有一个where子句 - where stuff ='something'。我不需要做任何技巧,只有200列左右的10-15个。

这是mySQL。只有196行

在此先感谢

+0

到目前为止,您有没有尝试过?有时分享你的尝试是有帮助的,即使他们失败了。其他人在这里可能能够从那里拿到它,做出更正,添加东西,然后使其工作。 – Nonym 2011-12-19 20:08:48

+0

不同的事情,像每个技能的工会等。我想收集我们一些失败,我想。 – user1084424 2011-12-19 20:51:41

+0

SELECT skill1如skill1, 最大值(CASE名WHEN 'NAME1' THEN ELSE skill1 0 END)AS 'NAME1', 最大值(CASE名WHEN 'NAME2' THEN skill1 ELSE 0 END)AS 'NAME2' FROM skills_table GROUP BY 1; - 这让我看到了可能的价值观,它的结束,但如果我确实得到它,它有一些问题。 1)每个技能需要是一个联盟,而专栏需要硬编码的名称。如果我能够正确地进行汇总(一行,而不是6),我可以和它一起生活吧。 – user1084424 2011-12-19 21:00:17

回答

0

不幸的是,你需要加入这个表与它自身的每一列/技能,你需要的。不漂亮,但我认为这是MySQL的唯一方法。例如:

select s1.skill1, s2.skill2, s3.skill3... 
    from skills s1 
    join skills s2 using (name) 
    join skills s3 using (name) 
.... 
+0

这给了我作为专栏的技能。我需要技能作为行和每列作为名称。 – user1084424 2011-12-19 20:55:27

+0

感谢您花时间尝试帮助我! :) – user1084424 2011-12-19 21:03:16