2011-12-19 9 views
2

私は検索して読んでいて、私が必要としているものはあまり得意ではありません。データ列をmySQlの行に変換します

テーブル表の

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

196行。スキルの値は0〜4の範囲です。

私は知っている、正規化されていません。今のところそれはこのようにとどまる必要があります。

私は今まで、1行があり

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

にそれぞれの名前を返す必要があります。

言い換えれば、名前欄とスキルごとの行(スキルの値)をwhere句で指定します(where stuff = 'something')。私はすべてのスキルを行う必要はありませんが、200程度の列のうちの10-15程度しかありません。

これはmySQLです。唯一の196行

ADVANCE

+0

これまでに試したことはありますか?場合によっては失敗したとしても、あなたの試行を共有することができます。ここに他の人がいれば、そこから訂正したり、物事を追加したり、それを働かせることができるかもしれません。 – Nonym

+0

スキルごとの労働組合のようなものがあります。私はいくつかの失敗を私たちに集めるつもりです。 – user1084424

+0

skill1として skill1、 'NAME1' AS(0 END ELSE THEN skill1 CASE名 'NAME1') 最大、skills_table GROUPから 'NAME2' AS( 'NAME2は' THEN ELSE 0 ENDをskill1 CASE名) 最大を選択BY 1; - それは私に可能な値の列を与えました、その終わりですが、私がそれをロールアップさせれば、いくつかの問題があります。 1)スキルごとにユニオンで、列の名前をハードコーディングする必要があります。私はおそらくロールアップ(1行、6ではない) – user1084424

答えて

0

のおかげでは、残念ながら、あなたはあなたが必要とする各列/スキルのためにそれ自身でこのテーブルに参加する必要があります。それほど美味しくはありませんが、私はそれがMySQLの唯一の方法だと思います。次のようなものがありますか:

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

それは私にコラムとしてのスキルを与えます。私は行としてのスキルと名前としての各列が必要です。 – user1084424

+0

時間をとっていただきありがとうございました。 :) – user1084424

関連する問題