Как можно сеньше применить информацию из другой таблицы, чтобы уменьшить количество операторов "case"?

Как можно сократить количество операторов Case в коде?
  • 17 июля 2024 г. 9:32
Ответы на вопрос 2
Один из способов уменьшить количество операторов "case" в коде - это использовать объединения таблиц (JOIN) и условные выражения (CASE WHEN) для получения результатов из другой таблицы. Например, вместо написания множества операторов "case" для проверки значений из другой таблицы, вы можете присоединить эту таблицу к основной и использовать соответствующие условия для выбора нужных данных. Это позволит сократить количество операторов "case" и сделать код более читаемым и эффективным.

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

Таким образом, использование JOIN, условных выражений и функций позволяет эффективно управлять информацией из других таблиц и сократить количество операторов "case" в коде.
Делаете две таблицы: 
1. Фирма-отправитель Company_Sender
id - идентификатор компании
name - наименование компании

2. Шаблоны поиска отправителя Sender_Template
id - идентификатор отправителя
template - текст шаблона
company_id - идентификатор фирмы-отправителя

Искать потом можно таким запросом, либо делать Update на какое-нибудь поле в t для пометки результата:
select t.*, 
(select Cs.Name
   from Sender_Template St
   join Company_Sender Cs on Cs.Id = St.Company_Id 
  where  t.baza like St.template
  limit 1
) as Sender_Name -- если null, значит ни один шаблон не подошел
from t

PS: Это самый примитивный вариант автоматизации like. Нельзя задавать шаблоны за пределами возможностей синтаксиса like. Нужно как-то отличать дубликаты, если будет определение на больше чем один шаблон.
Похожие вопросы