2016-12-11 8 views
0

は、私は2つの列id_studentと、このようなhobbiesとテーブル(INF)があります。別のテーブルの1つの列から3つの列にデータを分割する方法は? SQL

ID_student = 1  
Hobbies = "music, cooking, bassguitar" 

を、私は次の列が含まれている3つの列に別のテーブル(趣味)にそれらを分割することで趣味をコピーします:

ID_student hobby1 hobby2  hobby3 
1   music cooking bassguitar 

私はどのようにPostgresに何かを書くことができますか?

+2

は常に最大3つの趣味を持っています? – Susang

+0

正規化モデルでは、生徒のリスト、可能な趣味のリスト、リンクテーブル(id_student、id_hobby)の3つのテーブルでなければなりません。あなたの値を解析するには、関数を分割する必要があります(よくある質問です。検索を使用してください)。 –

答えて

1

これを実行する方法は多数あります。 一つの方法は、string_to_array機能を使用している:

あり
INSERT INTO hobbies (id, hobby1, hobby2, hobby3) 
SELECT id,hobbies_array[1],hobbies_array[2],hobbies_array[3] FROM 
    (
    SELECT id,string_to_array(hobbies,',') AS hobbies_array 
    FROM inf 
) AS foo; 
関連する問題