2013-12-01 5 views
0

У меня проблема с отношением n-n при попытке вставить в «среднюю таблицу».Oracle SQL - Вставка с подзапросом, возвращающим несколько строк

Цель состоит в том, чтобы связать Commune и ZipCode (во Франции, коммуна город, а название города может иметь несколько ZipCode, потому что есть коммуна с тем же именем. Но не в том же месте)

И ZipCode может обрабатывать несколько городов, вот моя связь nn.

Так вот запрос я использую:

INSERT INTO FR(IDCODEPOSTAL, IDCOM_SIM) 
VALUES 
('24209 CEDEX', (SELECT DISTINCT IDCOM_SIM FROM COMMUNE WHERE NCCENR='Creysse')); 

Но здесь SELECT, возвращает 2 строки. Я много читал, но я не нашел способа справиться с этим.

ответ

0

Я не уверен, что вы пытаетесь достичь, но, как правило, вы бы использовать INSERT ... SELECT (без VALUES) для вставки нескольких строк с помощью одного оператора:

INSERT INTO FR 
    (IDCODEPOSTAL, IDCOM_SIM) 
VALUES 
SELECT '24209 CEDEX', IDCOM_SIM 
FROM COMMUNE 
WHERE NCCENR='Creysse'; 

Однако, если вы хотите вставьте только одну строку, вам нужно убедиться, что суб-выбор возвращает только один. Это обычно делается с использованием агрегатной функции, такой как max()

INSERT INTO FR 
    (
    IDCODEPOSTAL, 
    IDCOM_SIM 
) 
VALUES 
    (
    '24209 CEDEX', 
    (SELECT max(IDCOM_SIM) FROM COMMUNE WHERE NCCENR='Creysse') 
); 
Смежные вопросы