#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.