Как вставить эту запись в таблицу ссуд? Для некоторых атрибутов требуются операторы SELECT? - PullRequest
0 голосов
/ 31 мая 2019

У меня есть таблица garage_manager

CREATE TABLE garage_manager(
garage_code NUMBER(2) NOT NULL,
man_id NUMBER(2) NOT NULL,
specialisation_id NUMBER(4) NOT NULL
);

Я пытаюсь вставить строку в таблицу garage_manager следующим образом. Man_id жестко запрограммирован.

INSERT INTO garage_manager VALUES(
(SELECT garage_code FROM garage WHERE garage_email = 'melbournec@rdbms.example.com'),
1,
(SELECT specialisation_id FROM manager_specialisation WHERE specialisation_type='S')
);

Однако яполучаю ошибку "слишком много значений"?

1 Ответ

0 голосов
/ 31 мая 2019

Может быть, есть несколько specialisation_ids, которые соответствуют specialisation_type='S'?Если это так, вам нужно каким-то образом агрегировать этот столбец.

Другой подход заключается в использовании синтаксиса INSERT...SELECT.

INSERT INTO garage_manager (garage_code, man_id, specialisation_id)
SELECT garage.garage_code, 1, manager_specialisation.specialisation_id
FROM garage, manager_specialisation
WHERE garage_email = 'melbournec@rdbms.example.com' AND specialisation_type='S'

Обратите внимание, что при наличии нескольких совпадающих гаражей или специализаций менеджера,тогда вы в итоге вставите несколько строк таким образом.Вы не предоставили достаточно информации о своей схеме базы данных, чтобы определить, может ли это быть проблемой.

...