Вчера одна женщина, которая использует отчет о проданных продуктах, пришла ко мне с проблемой.Отчет возвращает список всех продуктов, которые мы продаем с подсчетом за определенный период времени.В отчете было слишком много результатов по одному продукту.Строка "страница продажи" продукта также учитывает "страницу неограниченной продажи" - продукт обновления, который мы продаем.
Этот код дал неправильные результаты:
Select count(WorkOrderId) as cnt from tblworkorder
where PlanName LIKE '%{$row['PlanType']}%' and RecTime BETWEEN '$stime' and '$etime'
Проблема должнас подстановочными совпадениями.Однако из-за того, как мой предшественник настроил БД, это необходимо.Продажа может состоять из нескольких продуктов, каждый из которых указан по имени в столбце PlanName, разделенных запятыми.Например,
PlanName = Sale Page, Domain Name,
PlanName = Link, Unlimited Sale Page,
В то время как правильный ответ равен 1 в каждой строке, текущий код будет возвращен:
Domain Name = 1
Link = 1
Sale Page = 2
Unlimited Sale Page = 1
Если бы продукт был «Продажа Page-Unlimited», я мог бы получитьдобавьте запятую в конец имени плана, которое он ищет (например, «Страница продажи»).Поскольку проблема стоит на первом месте (и я не могу гарантировать, что страница продажи всегда будет первой в списке), это не решит эту проблему.Но это может предотвратить подобную проблему в будущем.
Без реструктуризации базы данных, чтобы иметь столбец, в котором планы перечислены по номеру (например, «P4, P16, P25» или «P1, P11») илитаблица соединений, как я могу найти на странице только страницу продажи, а не страницу неограниченной продажи при запуске отчета?