Можем ли мы объединить значения и запросы SELECT в MySQL - PullRequest
0 голосов
/ 13 января 2020

Я пытаюсь вставить данные в таблицу. Эта таблица имеет 6 атрибутов, 2 собственных и 4 внешних ключа. Теперь я пишу запрос, подобный этому:

insert into ***bus***
values ( 4 , 45 , (**select** **bus_driver**.id , **conductor**.id , **trip_location**.trip_id , **bus_route**.route_id
**from bus_driver , conductor , trip_location , bus_route**));

И он выдаёт мне ошибку вроде:

Код ошибки: 1241. Операнд должен содержать 1 столбец (ы)

Что я должен изменить в своем запросе

Ответы [ 2 ]

1 голос
/ 13 января 2020

Непонятно, что вы пытаетесь сделать. Похоже, в итоге вы получите много строк, вставленных в вашу таблицу bus, в зависимости от данных в других таблицах, из которых вы выбираете.

Если вы запускаете только оператор select, посмотрите, что вы получите для результатов:

select bus_driver.id, conductor.id, trip_location.trip_id, bus_route.route_id
from bus_driver, conductor, trip_location, bus_route

Затем добавьте 4, 45 перед всеми этими строками. Это то, что вы будете вставлять в таблицу bus.

Возможно, вы захотите сделать что-то более похожее на:

insert into bus (column1, column2, column3, column4, column5, column6) 
   select  4, 45, bus_driver.id, conductor.id, trip_location.trip_id, bus_route.route_id 
      from bus_driver, conductor, trip_location, bus_route
      where bus_driver.column? = ?
      and conductor.column? = ?
      ...

И предложения where будут созданы так, чтобы только один запись возвращается для каждой таблицы. Это зависит от того, что вы пытаетесь сделать, хотя. Могут быть ситуации, когда вам потребуется более одной записи из выбранных таблиц, что приведет к вставке нескольких записей в таблицу bus

1 голос
/ 13 января 2020

Вам нужно удалить предложение values ​​и просто поставить select сразу после имен таблицы и столбца предложения insert, как показано ниже:

 insert into bus(column1, column2 ........) 
   select  4 , 45 , bus_driver.id , conductor.id , trip_location.trip_id , 
   bus_route.route_id from bus_driver , conductor , trip_location , bus_route;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...