Замороченный запрос типа INSERT из других таблиц - MySQL
Формулировка задачи:
доброго времени суток!
с наступившим Вас Новым годом!
есть некая абстрактная таблица results типа
запрос типа SELECT a.a_id, b.b_id, c.c_id, d.d_id FROM aaa a LEFT JOIN *собрать_остальные_таблицы* выдает нужные 4 айдишника.
а теперь вопрос: как одним запросом сунуть всю эту дребедень + некое своё абстрактное значение 897 в первую таблицу?
логика вроде бы простая, в 5 полей засовываем 4 значения из других(-ой) таблиц(-ы), а пятое - свое. но что-то не хочет система меня понимать. быть может так просто не получится?
ошибку выдает #1241 - Operand should contain 1 column(s). ну понятно что дескать СЕЛЕКТ должен выдать 1 колонку, а я хочу 4 получить, добавить свою пятую и засунуть((
а вот запрос, подсмотренный в интернете логичен и работает
p.s. вот размусолил, раза в 2 можно было короче проблему объяснить...
a_id | b_id | c_id | d_id | result |
INSERT INTO values (a_id, b_id, c_id, d_id, result) VALUES ( (SELECT a.a_id, b.b_id, c.c_id, d.d_id FROM aaa a LEFT JOIN bbb b ON b.b_id=a.b_id LEFT JOIN ccc c ON c.c_id=b.c_id LEFT JOIN ddd d ON d.d_id=c.d_id WHERE d.d_id=123) , 897)
insert into table2 (Name, Subject, student_id, result) select Name, Subject, student_id, result from table1;
Решение задачи: «Замороченный запрос типа INSERT из других таблиц»
textual
Листинг программы
INSERT INTO values (a_id, b_id, c_id, d_id, result) SELECT a.a_id, b.b_id, c.c_id, d.d_id,"897" FROM aaa AS a LEFT JOIN bbb AS b ON b.b_id=a.b_id LEFT JOIN ccc AS c ON c.c_id=b.c_id LEFT JOIN ddd AS d ON d.d_id=c.d_id WHERE d.d_id=123
Объяснение кода листинга программы
В представленном коде выполняется сложный запрос типа INSERT из других таблиц. Пояснение к коду:
INSERT INTO values (a_id, b_id, c_id, d_id, result)
- здесь указывается, что мы хотим вставить данные в таблицуvalues
и указываем столбцы, в которые мы хотим вставить данные.SELECT a.a_id, b.b_id, c.c_id, d.d_id,
897FROM aaa AS a
- здесь мы указываем, откуда мы хотим взять данные для вставки. Мы выбираем данные из таблицыaaa
и присоединяем её к другим таблицам (bbb, ccc, ddd) по соответствующим столбцам.LEFT JOIN bbb AS b ON b.b_id=a.b_id
- здесь мы присоединяем таблицуbbb
к таблицеaaa
по столбцуb_id
.LEFT JOIN ccc AS c ON c.c_id=b.c_id
- здесь мы присоединяем таблицуccc
к таблицеbbb
по столбцуc_id
.LEFT JOIN ddd AS d ON d.d_id=c.d_id
- здесь мы присоединяем таблицуddd
к таблицеccc
по столбцуd_id
.WHERE d.d_id=123
- здесь мы добавляем условие, что мы хотим получить данные только из строки, гдеd_id
равно 123.'897'
- здесь мы указываем значение, которое мы хотим вставить в столбецresult
. Таким образом, данный код выполняет сложный запрос типа INSERT из других таблиц, где мы выбираем данные из таблицыaaa
и присоединяем их к другим таблицам (bbb, ccc, ddd) по соответствующим столбцам, а затем вставляем полученные данные в таблицуvalues
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д