Вместо того, чтобы изменять структуру вашей текущей таблицы для включения описания скобки стоимости *, а затем заполнять это дополнительное поле фиксированными значениями, зависящими от значения, содержащегося в поле Cost
, альтернативой может быть создание отдельной таблицы, содержащей верхние и нижние границы ценовых скобок и соответствующие описания.
Например, если предположить, что ваша таблица Fruit выглядит примерно так:
+----+-----------+-------+
| ID | fruit | cost |
+----+-----------+-------+
| 1 | Apple | £0.50 |
| 2 | Orange | £0.80 |
| 3 | Pineapple | £3.00 |
| 4 | Grape | £1.50 |
+----+-----------+-------+
Вы можете создать таблицу Cost Brackets со следующей структурой:
И заполните его следующими данными в скобках:
+----+--------+--------+-------------+
| ID | lbound | ubound | description |
+----+--------+--------+-------------+
| 1 | £0.00 | £1.00 | < £1 |
| 2 | £1.01 | £2.00 | < £2 |
| 3 | £2.01 | £5.00 | < £5 |
+----+--------+--------+-------------+
Затем вы можете связать их, используя запрос, такой как:
select f.*, c.description
from fruit f left join cost_brackets c on (f.cost between c.lbound and c.ubound)
Дает следующий результат для приведенных выше образцов данных:
+----+-----------+-------+-------------+
| ID | fruit | cost | description |
+----+-----------+-------+-------------+
| 1 | Apple | £0.50 | < £1 |
| 2 | Orange | £0.80 | < £1 |
| 3 | Pineapple | £3.00 | < £5 |
| 4 | Grape | £1.50 | < £2 |
+----+-----------+-------+-------------+
Этот подход имеет явное преимущество в том, что, если вы впоследствии решите изменить диапазоны ваших ценовых скобок и связанных с ними описаний, изменение нужно будет сделать только в одном месте , и значения будут каскадно проходить через все запросы, которые ссылаются на таблицу Cost скобки.
Принимая во внимание, что при вашем текущем подходе любое изменение в скобках стоимости будет включать:
- Изменение жестко закодированных скобок стоимости, найденных в функциях
Switch
, используемых в каждом запросе (и надеюсь, что вы охватили их все).
- Обновите значения, содержащиеся в каждой таблице, которая содержит описание скобок затрат, и надеемся, что значение, отображаемое в таблице, было соответствующим образом обновлено и отражает текущие скобки затрат.
* Кажется, что это должна быть разовая задача и часть вашей базы данных, а не операция, выполняемая кодом (если, возможно, вы не генерируете таблицу на лету ?)