Математическое действие со знаком из ячейки таблицы - MySQL
Формулировка задачи:
доброго времени суток!
еще мааалюсенький вопросик:
есть некая табличка tbl с полями типа
и надо в другую таблицу вставить результат математического действия из первой
INSERT INTO another_tbl (res) VALUES ((SELECT tbl.x *математическое действие из tbl.sign* tbl.y WHERE tbl.id=1))
можно ли такое сделать 1 запросом?
а главное - как?)))
id | x | sign | y |
1 | 2 | + | 2 |
2 | 3 | * | 4 |
Решение задачи: «Математическое действие со знаком из ячейки таблицы»
textual
Листинг программы
create table tst ( id int not null auto_increment, x int, sign char(1), y int, constraint pk_tst_id primary key (id) ) engine = myisam default character set = cp1251; insert into tst (x, y, sign) values (2, 3, '+'), (4, 2, '/'), (5, 3, '-'), (2, 8, '*'); select *, case t.sign when '+' then cast(t.x + t.y as decimal(10, 2)) when '-' then cast(t.x - t.y as decimal(10, 2)) when '*' then cast(t.x * t.y as decimal(10, 2)) when '/' then cast(t.x / t.y as decimal(10, 2)) end as res from tst t;
Объяснение кода листинга программы
- Создание таблицы
tst
с полями: —id
— уникальный идентификатор записи (автоинкрементируемое поле) —x
— первое числовое значение —sign
— знак математического действия (плюс, минус, умножить или поделить) —y
— второе числовое значение - Вставка данных в таблицу
tst
- Выборка данных из таблицы
tst
с использованием функцииcase
для определения операции, которую необходимо выполнить в зависимости от значения поляsign
. Результатом выборки является результат математической операции (сложение, вычитание, умножение или деление) двух чисел с точностью до двух знаков после запятой.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д