Как вставить данные в таблицу с объединением - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь вставить больше данных в свои таблицы. Этот код ниже работает отлично:

insert into GENRES (GENRES) 
SELECT GENRE1 FROM titles
union all
SELECT GENRE2 FROM titles
union all
SELECT GENRE3 FROM titles

Однако, когда я пытаюсь изменить его, чтобы я мог вставить MOVIE_TITLE_ID с ним, я могу ошибка:

insert into GENRES (GENRES,MOVIE_TITLE_ID) 
SELECT GENRE1 FROM titles
union all
SELECT GENRE2 FROM titles
union all
SELECT GENRE3 FROM titles
union all
select TITLE_ID
from titles;

Ошибка MSG:

Error starting at line : 175 in command -
insert into GENRES (GENRES,MOVIE_TITLE_ID) 
SELECT GENRE1 FROM titles
union all
SELECT GENRE2 FROM titles
union all
SELECT GENRE3 FROM titles
union all
select TITLE_ID
from titles
Error at Command Line : 175 Column : 13
Error report -
SQL Error: ORA-00947: not enough values
00947. 00000 -  "not enough values"
*Cause:    
*Action:

Я предполагаю, что делаю это в неправильном формате, любая помощь будет полезна!

1 Ответ

1 голос
/ 30 марта 2020

Каждый из подзапросов union ed должен возвращать одинаковое количество столбцов с эквивалентными типами данных, которые, в свою очередь, должны соответствовать списку столбцов для insert. Ваш запрос объявляет два столбца для вставки, но подзапросы возвращают только один столбец (и, возможно, тип данных title_id не совпадает с genre1).

Вместо этого каждый подзапрос должен создавать два столбца : жанр и связанный идентификатор заголовка:

insert into genres (genres,movie_title_id) 
select genre1, title_id from titles
union all
select genre2, title_id from titles
union all
select genre3, title_id from titles
...