возвращает 2 дополнительных столбца при запросе с вычислением

#mysql

#mysql

Вопрос:

То, что я хочу сделать, вероятно, очень просто, но у меня есть таблица:

 |---------------------|------------------|
|          ID         |       price      |
|---------------------|------------------|
|          1          |         30       |
|---------------------|------------------|
  

Какой запрос я использую в этой процедуре:

 PROCEDURE `get_info`(IN itemID VARCHAR(255), IN itemQuantity VARCHAR(255)) 
BEGIN
SELECT * from table where ID = itemID;
END
  

Теперь я хотел бы, чтобы запрос вернул 2 дополнительных столбца с «количеством», которое является вводом процедур «itemQuantity» и дополнительным столбцом «TotalPrice», который является itemQuantity * price.

Итак, таблица выглядит следующим образом:

 |---------------------|------------------|----------------------|------------------|
|          ID         |       price      |       quantity       |     totalPrice   |
|---------------------|------------------|----------------------|------------------|
|          1          |         30       |          2           |        60        |
|---------------------|------------------|----------------------|------------------|
  

Я могу вернуть все по отдельности, но как мне объединить это в один результат запроса?

Комментарии:

1. Кажется очевидным включить параметры в select — я что-то упускаю?

Ответ №1:

Это то, что вы хотите?

 PROCEDURE `get_info`(
    IN in_itemID VARCHAR(255),
    IN in_itemQuantity VARCHAR(255)) 
BEGIN
    SELECT t.*, in_itemQuantity as itemQuantity, in_itemQuantity * t.price as totalprice
    FROM table t
    WHERE t.ID = in_itemID;
END;
  

Обратите внимание, что я изменил имена параметров, добавив к ним префикс in_ . Это значительно снижает вероятность того, что параметр конфликтует с существующим именем столбца.

Комментарии:

1. Возможно, вам придется изменить тип данных количества на int или cast() перед умножением Также, если вы хотите отображать цену для пользователя с учетом культуры, вы можете использовать convert to Money type , или DECIMAL(19, 4) — хороший выбор

2. Спасибо. Было довольно очевидно… Просто не могу привыкнуть к синтаксису sql.