2013-09-16 5 views
1

Я пытаюсь объявить переменные и вычислить поля в MySQL Workbench с определенным набором данных. Вот пример данных я тянущие:IF/WHEN Заявления в SQL

select 
product.id as "Product ID", 
product.name as "Product Name", 
product.type as "Product Type", 
product.weight as "Product Weight", 
product.amount as "Product Amount", 
product.cost as "Product Cost" 

У меня есть все соответствующие соединения ниже, но я хотел бы создать дополнительную переменный, которую можно использовать для управления, и в этом случае, объявить это как «Общая стоимость». Общая стоимость, однако, будет отличаться в зависимости от типа продукта. Поэтому, если Тип продукта был «переменным», я бы вычислил общую стоимость как продукт (product.cost * product.weight), и если Тип продукта был «исправлен», я вычислил общую стоимость как (product.cost * product.amount).

Сообщите мне, если есть способ построить функцию IF и объявить ее как значение перед моими объединениями.

Спасибо!

Джефф

+0

Пожалуйста, укажите код, который вы пробовали, и что случилось. – showdev

+0

Я считаю, что это возможно с инструкцией WHERE, против IF, см. Этот [аналогичный вопрос] (http://stackoverflow.com/questions/14608245/mysql-query-with-conditional-statement) для указателей –

ответ

1

Что бы вы добавить в предложении WHERE будет также фильтровать количество строк. Так что это явно не путь. Если вы просто хотите получить дополнительное значение, которое будет вычислено, и в зависимости от других полей, которые вы должны использовать в заявлении CASE.

select blah, blah, blah, 
    case product.type 
     when 'variable' then product.cost * product.weight 
     when 'fixed' then product.cost * product.amount 
    end TotalCost 
from blah blah 

Дополнительная информация в этом link.

+0

Фактически созданный синтаксическая ошибка в конце Case (случай подчеркивается красным в MySQL Workbench). Нужно ли сначала объявлять переменную для TotalCost? – Jeff

+0

@Jeff Мой плохой. Проверьте ответ еще раз. Удалите последний «случай». Также обновлена ​​ссылка. –

+0

он работал, когда я положил конец как «Общая стоимость». Когда я ставлю его как TotalCost и попытался использовать его как переменную, я не смог бы связать ее в следующем выражении. (TotalCost * order.quantity) как «Общая стоимость» Или что-то в этом роде. – Jeff

Смежные вопросы