Сложности с конструкциями IF/ELSE и CASE в MySql
Формулировка задачи:
Всем доброго.
Помогите допилить запрос. Необходимо что бы в зависимости от условия возвращало разные имена ячеки и ее значения.
Листинг программы
- SELECT h.street_id, `street_city_id` AS `city_id`,
- IF(`city_id` > 1, 'obl', 'rai') AS CELL
- CASE WHEN `city_id` > 1
- THEN (SELECT `raion_id` FROM `raion` WHERE raion_id = city_raion_id)
- ELSE (SELECT `raion_obl_id` FROM `raion_obl` WHERE raion_obl_id = city_raion_id)
- END AS VAL
- FROM `house` h
- INNER JOIN `street` s ON h.street_id = s.street_id
- INNER JOIN `city` c ON s.street_city_id = c.city_id
- WHERE `house_id` = '11830'
Решение задачи: «Сложности с конструкциями IF/ELSE и CASE в MySql»
textual
Листинг программы
- CASE WHEN `city_id` > 1 THEN (SELECT `raion_id` FROM `raion` WHERE raion_id = city_raion_id)
- WHEN `city_id` <= 0 THEN (SELECT `raion_obl_id` FROM `raion_obl` WHERE raion_obl_id = city_raion_id)
- END AS VAL
Объяснение кода листинга программы
- В данном коде используется конструкция CASE WHEN, которая позволяет выполнить проверку условия и в зависимости от его истинности выбрать определенное значение.
- В первом условии (
city_id
> 1) проверяется, больше ли значение переменнойcity_id
единицы. Если это условие истинно, то выполняется запрос внутри скобок. - В запросе внутри скобок (
SELECT
raion_idFROM
raionWHERE raion_id = city_raion_id
) выбирается значение переменнойraion_id
из таблицыraion
, гдеraion_id
равно значению переменнойcity_raion_id
. - Во втором условии (
city_id
<= 0) проверяется, меньше ли или равно значение переменнойcity_id
нулю. Если это условие истинно, то выполняется запрос внутри скобок. - В запросе внутри скобок (
SELECT
raion_obl_idFROM
raion_oblWHERE raion_obl_id = city_raion_id
) выбирается значение переменнойraion_obl_id
из таблицыraion_obl
, гдеraion_obl_id
равно значению переменнойcity_raion_id
. - Результат выполнения запросов сохраняется в переменную
VAL
. - Все эти действия выполняются при условии, что переменная
city_raion_id
имеет значение, которое не равно нулю.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д