MySQL. Использование IF и CASE в SELECT.

Главная  >>  Базы данных  >>  MySQL  >>  MySQL. Использование IF и CASE в SELECT.

Есть ситуации, когда в зависимости от определенных условий в блоке SELECT в запросе нужно возвращать определенные поля или же под один алиас возвращать разные значения. Как это сделать и в каких ситуациях это решает проблему я покажу в этой статье.

Ситуация из реальной практики — в БД хранится цена и рядом с ней хранится валюта этой цены. Т.е. у одной записи может быть цена 5 000 и валюта UAH, а во второй — 500, но с валютой USD. Соответственно чтобы сделать, например, сортировку, следует как-то унифицировать цену.

Для этого нужно привести обе цены к одной — например, к USD. Т.е. задача такая — если поле имеет валюту UAH — селектим просто цену, а в случае, если валюта — USD — цену домножаем на курс.

Вариант решения при помощи CASE:

Вариант решения при помощи IF:

Оба варианта вернут для каждой записи значение, соотв. цене в UAH.

По моей практике — IF больше годится для случая, когда условие простое — т.е. вариантов, например два — две валюты. Если же валют будет больше — условие будет слишком громоздким и сложным к понимаю, за счет добавления вложенных блоков.

В таком случае лучше использовать CASE.

Вот и все. Если остались вопросы — пишите в комментариях. Удачи!