2015-11-18 4 views
0

Я пытаюсь вставить в реляционную таблицу с результатом двух запросов SELECT.Postgres INSERT INTO with Two Select Statement

таблица 1:

id | url 
------------------------- 
1 | http://something.com 

Таблица 2:

id | address 
---------------------------- 
1 | [email protected] 

таблица 3:

table1_id | table2_id 
--------------------- 
1   | 1 

И я пытаюсь построить запрос INSERT комбинированный из двух выбирает и a UNION

У меня есть b een работает с этим:

INSERT INTO table3 
SELECT id FROM table1 
WHERE table1.url = 'http://something.com' 
UNION 
SELECT id FROM table2 
WHERE table2.address = '[email protected]'; 

Где я пошла не так? Я получаю сообщение об ошибке во втором SELECT, он может выбрать первый идентификатор и передать его в INSERT, но он пытается вставить (1, null), хотя второй SELECT действителен сам по себе.

+0

Когда это не удалось, что такое сообщение об ошибке? – CodeNotFound

+0

UNION ALL хранит дубликаты, но это не ответ. Вам нужен ПЕРЕКРЕСТНЫЙ ПРИСОЕДИНЯЙТЕСЬ. – jarlh

+0

«* вставить в реляционную таблицу *» - все таблицы в реляционной базе данных являются «реляционными». –

ответ

1
INSERT INTO table 3 
    select A.id, B.id 
    from Table1 A 
    cross join Table2 B 
    where A.url = 'http://something.com' 
     and B.address = '[email protected]'