2016-12-11 2 views
0

У меня есть таблица (РСМД) с двумя столбцами id_student и hobbies так:Как разбить данные из одного столбца на три столбца в другой таблице? SQL

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

и я хочу, чтобы скопировать хобби, разделяя их на другую таблицу (хобби) в трех столбцах, которые содержат следующие столбцы:

ID_student hobby1 hobby2  hobby3 
1   music cooking bassguitar 

Как я могу написать что-то подобное в Postgres?

+2

Там всегда есть максимум три хобби ?? – Susang

+0

В нормализованной модели это должно быть три таблицы: список учеников, список возможных хобби, таблица ссылок (id_student, id_hobby). Для анализа ваших значений вам нужна функция расщепления (очень распространенный вопрос, пожалуйста, используйте поиск). –

ответ

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; 
Смежные вопросы