2015-09-23 2 views
0

У меня есть следующие базы данных PostgreSQL выложили:Вставить строку с двумя полями из двух разных запросов SELECT?

Database

Теперь у меня есть проблемы, формирующее заявление вставки. Я хочу, чтобы вставить строки в DiscussionParticipation так, что для каждого Discussion было бы две записи:

  • Один для User кто владеет связанной Activity

  • один для User, которому принадлежит Response, связанных с Activity

Например, если были следующие данные:

Discussion: 
id: 1 | Activity_id: 1 

Activity: 
id: 1 | User_id: 1 

Response: 
id: 1 | Activity_id: 1 | User_id: 2 

User: 
id: 1 | username: Adam 
id: 2 | username: Bill 

Другими словами: Пользователь «Адам» создал действие, в котором пользователь «Билл» создал ответ. Существует связанная дискуссия для этой деятельности.

Теперь я хотел бы добавить эти две строки в таблице DiscussionParticipation:

DiscussionParticipation: 
User_id: 1 | Discussion_id: 1 
User_id: 2 | Discussion_id: 1 

Как сформировать этот INSERT?

ответ

0

Список пользователей может принять участие в обсуждении union Список пользователей может принять участие в обсуждении.

insert into DiscussionParticipation (User_id, Discussion_id) (

    select a.User_id as User_id, d.id as Discussion_id 
    from Discussion d 
    inner join Activity a on (a.id = d.Activity_id) 

    union 

    select r.User_id as User_id, d.id as Discussion_id 
    from Discussion d 
    inner join Response r on (r.Activity_id = d.Activity_id) 

);