Сложить данные из 2х таблиц и записать в 3юю - MySQL
Формулировка задачи:
Здравствуйте.
Есть 3 таблицы. Как в столбец sum записать сумму ячеек из 2х таблиц?
Допустим, tovar1 (1,name1,100р), tovar2 (1,name1,120р), в ячейке sum будет (220р).
Мне кажется, вопрос довольно глупый, но sql забыт несколько лет назад.
CREATE TABLE `tovar1` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(32) NOT NULL, `price` INT(255) NOT NULL, `picture` VARCHAR(255) NOT NULL, PRIMARY KEY (`id`) ); CREATE TABLE `tovar2` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(32) NOT NULL, `price` INT(255) NOT NULL, `picture` VARCHAR(255) NOT NULL, PRIMARY KEY (`id`) ); CREATE TABLE `orders` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `tov1` VARCHAR(32) NOT NULL, `tov2` VARCHAR(32) NOT NULL, `sum` INT(32) NOT NULL, PRIMARY KEY (`id`) );
Решение задачи: «Сложить данные из 2х таблиц и записать в 3юю»
textual
Листинг программы
INSERT INTO orders VALUES(1,1,1,(SELECT w.price + (SELECT e.price FROM tovar2 e WHERE e.id=1) FROM tovar1 w WHERE w.id=1)); commit;
Объяснение кода листинга программы
- Создается новая строка в таблице
orders
с помощью оператораINSERT INTO
. - В скобках указаны значения, которые будут присвоены каждому из трех столбцов новой строки.
- Значение для первого столбца (номер заказа) равно 1.
- Значение для второго столбца (товар) также равно 1.
- Значение для третьего столбца (цена) вычисляется с помощью подзапроса, который включает в себя еще один подзапрос.
- Внешний подзапрос
(SELECT w.price FROM tovar1 w WHERE w.id=1)
выбирает цену из таблицыtovar1
для товара с идентификатором 1. - Внутренний подзапрос
(SELECT e.price FROM tovar2 e WHERE e.id=1)
выбирает цену из таблицыtovar2
для товара с идентификатором 1. - Результаты обоих подзапросов складываются и присваиваются значению для третьего столбца (цена).
- После выполнения операции записи транзакция коммитится с помощью команды
COMMIT
, чтобы гарантировать, что все изменения будут сохранены.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д