Как скопировать / вставить несколько строк данных, чтобы реализовать отношения многие ко многим в postgres - PullRequest
0 голосов
/ 15 мая 2018

У меня есть следующие таблицы в Postgres: вопросы, ответы и question_response.Между вопросами и ответами существует много-много взаимосвязей.

questions.sql

CREATE TABLE questions( 
    id BIGSERIAL PRIMARY KEY,
    question VARCHAR(255)
);

respes.sql

CREATE TABLE responses( 
    id BIGSERIAL PRIMARY KEY,
    response VARCHAR(255)
);

question_respone.sql #

CREATE TABLE question_response(
    question_id bigint REFERENCES questions ON DELETE CASCADE,
    response_id bigint REFERENCES responses ON DELETE CASCADE,
    PRIMARY KEY ( question_id, response_id)
);

У меня есть следующие данные в вопросахтаблица

id | question
 1   Rate the effectiveness of the program?
 2   Rate the ease of learning?
 3   Rate the duration ?
 .....
// there are a list of 20 questions 

и в таблице ответов

id | response
 100   Poor
 200   Average
 300   Good
 400   Excellent

Как написать запрос функции в Postgres для вставки следующих данных в таблицу question_response.

question_id | response_id

         1   100
         1   200
         1   300
         1   400
         2   100
         2   200
         2   300
         2   400
         3   100
         3   200
         3   300
         3   400
         4   100
         4   200
         4   300
         4   400
        ......... etc for all 20 questions

1 Ответ

0 голосов
/ 15 мая 2018
insert  into question_response
select  q.id
,       r.id
from    responses r
cross join
        questions q

Пример на скрипте SQL.

...