SELECT в UPDATE (Запрос в запросе). Умножение полей таблиц между собой - MySQL

Узнай цену своей работы

Формулировка задачи:

Привет уважаемые посетители этого форума! Не раз он меня выручал в сложных ситуациях) Надеюсь, что и в этот раз выручит) Есть запрос: К примеру нужно выбрать два поля таблицы (одно с одной, другое с другой) и нужно перемножить значения этих полей между собой и вернуть в нужное поле ТОЛЬКО с помощью UPDATE. Вот как это я пытаюсь сделать:
Листинг программы
  1. "UPDATE grocery_supermarket_manager.stock AS stock, " +
  2. "(SELECT price_for_one FROM grocery_supermarket_manager.products WHERE id_products = 1) AS products, " +
  3. "(SELECT quantity FROM grocery_supermarket_manager.stock WHERE id_stock = 1) AS st, " +
  4. " SET stock.price = products.price_for_one * st.quantity" +
  5. " WHERE stock.id_stock = 1"
Выдаёт следующую ошибку: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET stock.price = products.price_for_one * st.quantity WHERE stock.id_stock = 1' at line 1 Что мне посоветуете (только адекватные решения для этого вопроса)? Что использую MySQL, C#, .NET, SQLconnector for NET. В программе нету ошибок только в запросе.

Решение задачи: «SELECT в UPDATE (Запрос в запросе). Умножение полей таблиц между собой»

textual
Листинг программы
  1. UPDATE grocery_supermarket_manager.stock AS T1,
  2.       (SELECT price_for_one
  3.         FROM grocery_supermarket_manager.products
  4.         WHERE id_products = 1) AS T2,
  5.       (SELECT quantity
  6.         FROM grocery_supermarket_manager.stock
  7.         WHERE id_stock = 1) AS T3
  8.   SET T1.price = T2.price_for_one * T3.quantity
  9. WHERE T1.id_stock = 1;

Объяснение кода листинга программы

  1. Запрос на обновление данных в таблице grocery_supermarket_manager.stock
  2. В запросе используется оператор UPDATE
  3. В качестве источника данных для обновления используется таблица grocery_supermarket_manager.products
  4. Используется подзапрос для получения значения поля price_for_one из таблицы grocery_supermarket_manager.products
  5. Используется подзапрос для получения значения поля quantity из таблицы grocery_supermarket_manager.stock
  6. Выполняется умножение значений полей price_for_one и quantity
  7. Результат умножения присваивается полю price в таблице grocery_supermarket_manager.stock
  8. В условии WHERE указывается, что обновление должно быть выполнено только для записи с id_stock равным 1

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.154 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы