Вставка значений в таблицу подзапросом

Подскажите пожалуйста как оформить вставку значений в несколько колонок через INSERT и SELECT из другой таблицы. В таблице personnel_regulations описываются нормативы на виды деятельности и количество персонала

DROP TABLE IF EXISTS personnel_regulations;
CREATE TABLE personnel_regulations(
id SERIAL PRIMARY KEY,
work_name VARCHAR(150) NOT NULL,
name_of_specialty VARCHAR(150) NOT NULL,
waste_generation INT UNSIGNED NOT NULL,
number_of_staff INT UNSIGNED NOT NULL,
FOREIGN KEY (name_of_specialty) REFERENCES staff (name)
);

INSERT personnel_regulations VALUES
(DEFAULT, 'Общепроизводственные', 'Начальник участка', 1, 1),
(DEFAULT, 'Общепроизводственные', 'Кладовщик', 1, 1),
(DEFAULT, 'Общепроизводственные', 'Слесарь', 1, 1),
(DEFAULT, 'Обезвреживание отходов', 'Оператор ТДУ', 500, 1),
(DEFAULT, 'Обезвреживание отходов', 'Разнорабочий', 500, 2),
(DEFAULT, 'Транспортирование отходов', 'Водитель мусоровоза', 2000, 1),
(DEFAULT, 'Общепроизводственные', 'Механик', 1, 1),
(DEFAULT, 'Транспортирование сточных вод', 'Водитель вакуумной машины', 3000, 1),
(DEFAULT, 'Очистка сточных вод', 'Оператор очистных сооружений', 2000, 2),
(DEFAULT, 'Транспортирование металлолома', 'Водитель ломовоза', 100, 1),
(DEFAULT, 'Переработка металлолома', 'Газорезчик', 100, 2),
(DEFAULT, 'Переработка металлолома', 'Сварщик', 100, 1),
(DEFAULT, 'Переработка металлолома', 'Стропальщик', 100, 1);

В chart_for_hr добавляются значения с количеством персонала по месяцам

DROP TABLE IF EXISTS chart_for_hr;
CREATE TABLE chart_for_hr(
id SERIAL PRIMARY KEY,
name_of_specialty VARCHAR(150) UNIQUE,
value_jan INT UNSIGNED DEFAULT 0,
value_feb INT UNSIGNED DEFAULT 0,
value_mar INT UNSIGNED DEFAULT 0,
value_apr INT UNSIGNED DEFAULT 0,
value_may INT UNSIGNED DEFAULT 0,
value_jun INT UNSIGNED DEFAULT 0,
value_jul INT UNSIGNED DEFAULT 0,
value_aug INT UNSIGNED DEFAULT 0,
value_sep INT UNSIGNED DEFAULT 0,
value_oct INT UNSIGNED DEFAULT 0,
value_nov INT UNSIGNED DEFAULT 0,
value_dec INT UNSIGNED DEFAULT 0
);

В таблицу chart_for_hr; должны попадать значения с количеством персонала по месяцам исходя из установленных нормативов в предыдущей таблице и после добавления значений в таблицу plan_of_work (там только название вида деятельности и также колонки с месяцами от января до декабря) с помощью процедуры (до её написания попробовал вставить значения через

INSERT chart_for_hr (id, name_of_specialty, value_jan, value_feb, value_mar, value_apr, value_may,
    value_jun, value_jul, value_aug, value_sep, value_oct, value_nov, value_dec)
VALUES (DEFAULT, 
(SELECT name_of_specialty FROM personnel_regulations WHERE work_name = 'Обезвреживание отходов'),

и далее перечислил рандомные значения для всех месяцев на что sql ругается: SQL Error [1242] [21000]: Subquery returns more than 1 row т.к. данного вида деятельности возвращается 2 строки с названиями специальностей.


Ответы (0 шт):