Я не совсем знал, как озаглавить этот вопрос, трудно описать, что я имею в виду в заголовке.По сути, у меня есть перечисленные коды состояния, и я ищу простой способ сопоставить их с данными в запросе.
Например, допустим, где-то определено следующее.Они находятся вне моего контроля и не находятся в базе данных:
CODE STATUS
----------------
1 = ACTIVE
2 = SUSPENDED
3 = CLOSED
4 = CANCELED
5 = ETC...
SELECT item_title, status_code FROM mytable WHERE foo='bar';
Целочисленный код хранится в базе данных, но часто бывают случаи, когда это будет полезноесли бы я мог сделать mysql осведомленным о том, что они переводят, особенно для сортировки, но было много других случаев, это было бы полезно.Я знаю, что можно сделать что-то вроде этого:
SELECT item_title,
IF(status_code=1,'ACTIVE',
IF(status_code=2,'SUSPENDED',
IF(status_code=3,'CLOSED',
IF(status_code=3,'CANCELED', ...)
)
)
) AS real_status
FROM mytable WHERE foo='bar';
Но это утомительно, некрасиво и подвержено ошибкам, и в некоторых случаях у меня может быть 50 или более кодов, так что обычно это не решение,В идеале, я хотел бы иметь определения кода в таблице, чтобы я мог просто присоединиться к ней, но это не вариант.
Я надеюсь, что есть какая-то функция или метод MySQL, о которых я не знаю, которые могут решитьthis.
Редактировать: Чтобы уточнить, коды состояния не определены в базе данных, они определены в коде.Я могу перевести статусы в коде после запроса, но это не идеально.По сути, я спрашиваю, есть ли способ сделать это в SQL:
SELECT $statushash[tbl.status_code] AS real_status FROM mytable AS tbl...