2016-12-11 3 views
0

Ich habe Tabelle (inf) mit zwei Spalten id_student und hobbies wie folgt aus:Wie teilt man Daten von einer Spalte in drei Spalten in einer anderen Tabelle? SQL

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

und ich möchte die Hobbys kopieren, indem Sie sie an einen anderen Tisch (Hobbys) in drei Spalten aufgeteilt, die folgende Spalten enthalten:

ID_student hobby1 hobby2  hobby3 
1   music cooking bassguitar 

Wie könnte ich etwas ähnliches in Postgres schreiben?

+2

Es immer maximal drei Hobbys ?? – Susang

+0

In einem normalisierten Modell sollte es drei Tabellen sein: Liste der Studenten, Liste der möglichen Hobbys, Verknüpfungstabelle (id_student, id_hobby). Um Ihre Werte analysieren zu können, benötigen Sie eine Splitting-Funktion (sehr häufige Frage, bitte benutzen Sie die Suche). –

Antwort

1

Es gibt viele Möglichkeiten, dies zu tun. Eine Möglichkeit ist mit der string_to_array Funktion:

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; 
Verwandte Themen